日后慢慢填坑
1.按秩合并,秩就是树高,若小的是父亲大的是儿子,则总树高不优秀,反之不错
void init(int n){ for(int i=0;i<n;i++) fa[i]=i,rank[i]=0; } void unionn(int x,int y){ xx=find(x); yy=find(y); if(xx==yy) return; if(rank[x]<rank[y]) fa[x]=y;//秩小的父亲是秩大的,使得树的总高较小 else if(x==y){ fa[y]=x;rank[x]++;} else fa[y]=x; }