并查集,顾名思义,有合并和查询的功能,是一种非常高效的算法。
并查集其实贼简单,主要就三个操作
1.查找根节点(找爸爸)。
void getfather(int v)
{
if(father[v]=v)//如果该节点的爸爸是自己,那他就是根节点。
return v;
else
{
father[v]=getfather(father[v]); //用递归找爸爸的爸爸。
return father[v];
}
}
2.合并集合
void un(int x,int y)
{
int fx=getfather[x];
int fy=getfather[y];//找到两个点的 根节点。
father[fx]=fy;//让一个根节点成为另一个根节点的爸爸。
}
3.判断是否在同一集合
void judge(int x,int y)
{
int fx=getfather[x];
int fy=getfather[y];
return fx==fy;//如果两个点的根节点一样,那他们就是在一个集合里的。
}
http://blog.csdn.net/qq_39670434/article/details/78003000
一个很silly的dog的博客。。嘿嘿