并查集模板
void init(int n){
for(int i=0;i<n;i++)
par[i]=i,tall[i]=1;
}
int find(int x){
if(par[x]==x)return x;
else return par[x]=find(par[x]);
}
void unite(int x,int y){
int px=find(x),py=find(y);
if(px==py)return ;
if(tall[px]>tall[py])par[py]=px;
else{
par[px]=py;
if(tall[px]==tall[py])tall[py]++;
}
}