并查集
1.初始化
把每个点初始化为其本身
void Init(){
for(int i=0;i<maxnum;i++)
pre[i]=i;
}
2.合并
将两个元素集合合并为一个集合
void merge(int x,int y){
int a=find[x];
int b=find[y];
if(a!=b)
pre[y]=a;
}
3.查找
查找元素所在集合,即根节点
int find(int x){
if(x==pre[x])
return pre[x];
else
return find(pre[x]);
}