并查集:
使用并查集可以把每个连通分量看作一个集合,该集合包含连通分量的所有点。这两两连通而具体的连通方式无关紧要,
就好比集合中的元素没有先后顺序之分,只有属于和不属于的区别。
#define N 100
int father[N];
void init()
{
for(int i=0;i<n;i++)
father[i]=1;
}
void union(int x,int y) //合并两元素所在集合
{
x=getfather(x);
y=getfather(y);
if(x!=y)
father[x]=y; }
/*bool same(int x,int y) //判断两元素在不在同一集合
{return getfather(x)==getfather(y);}
*/
int getfather(int x) //获得该元素的父亲节点
{
while(x!=father[x])
{x=father[x];}
return x;
}
相关文章
- 02-10最小生成数(并查集)Kruskal算法
- 02-10并查集及其简单应用:优化kruskal算法
- 02-10畅通工程(最小生成树and并查集算法)HDU - 1232
- 02-10Leetcode 261. 以图判树(中等) 1135. 最低成本联通所有城市(中等) 1584. 连接所有点的最小费用(中等) 并查集&Kruskal最小生成树
- 02-10九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
- 02-10POJ 2421 Constructing Roads (Kruskal算法+压缩路径并查集 )
- 02-10hdu 1233(还是畅通project)(prime算法,克鲁斯卡尔算法)(并查集,最小生成树)
- 02-10图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用
- 02-10稠密图(邻接矩阵),并查集,最短路径(Dijkstra,spfa),最小生成树(kruskal,prim)
- 02-10Kruskal算法的C语言实现(并查集版)