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;