for(int i=1;i<=n;++i) f[i]=i;
int F(int x)//找祖先
{
if(x==f[x]) return x;
else return f[x]=F(f[x]);
}//压缩路径
//合并
int fx=F(x),fy=F(y);
f[fx]=fy;
for(int i=1;i<=n;++i) f[i]=i;
int F(int x)//找祖先
{
if(x==f[x]) return x;
else return f[x]=F(f[x]);
}//压缩路径
//合并
int fx=F(x),fy=F(y);
f[fx]=fy;
转载于:https://www.cnblogs.com/adelalove/p/8683908.html