并查集

并查集
int pre[100005],temp;//num是保存被指向的数目
int find(int x)
{
if(pre[x]x) return x;
return pre[x]=find(pre[x]);
}
void Union(int x,int y)// 第一种是如果出现的两个点的祖宗是同一个人,那么说明之前已经有成一串了,在连就会变成环
{
int a=find(x),b=find(y);
if(a
b)
{
temp=1;//temp判断会不会有环
return ;
}
pre[b]=a;
}

原文地址:https://www.cnblogs.com/wzl19981116/p/9501126.html