学习思考:
并查集是树里面的内容,但是图里面的一个k什么的一个找最小生成树的算法用到了。
既然用到了就总不能不会吧?
所以特写此博客。
并查集内容:
基本思想:并查集是将一些元素划分成好几个集合,每个集合互不相交。
并查集之所以叫做并查集,是有并和查两个操作。
并即合并:合并成一个集合
查即查找:查找是否属于同一个集合
实现
并查集的实现我没有用书上的结构化,而是用的数组:
初始化:
for (i = 1; i <= n; i++)
father[i] = i;
并(不属于同一集合就合并):
void union(int a,int b)
{
int r=find(a);
int l=find(b);
if(r!=l)
father[a]=b;
}
查:
int find(int x)
{
if (father[x] != x) father[x] = find(father[x]);
return father[x];
}