并查集
const int MX=1e5+5;
int Fa[MX];
//初始化
void Init(int n){
for(int i=1;i<=n;i++){
Fa[i]=i;
}
}
//查询
int Find(int x){
return Fa[x]==x?x:Fa[x]=Find(Fa[x]);
}
//合并
void Union(int i,int j){
int x=Find(i),y=Find(j);
Fa[Find(x)]=Find(y);
}