并查集模板
int setfind(int xx) { int fa=father[xx]; if(fa==xx) return fa; else return father[xx]=setfind(fa); } void setunion(int xx,int yy) { int X=setfind(xx); int Y=setfind(yy); if(X==Y) return; else if(val[X]>val[Y]) father[Y]=X; else father[X]=Y; if(val[X]==val[Y]) val[Y]++; return; }