这个写法就能高效查集合大小了
const int maxn=1e2+43;
int fa[maxn],n;
void init(){for(int i=1;i<=n;i++)fa[i]=-1;}
int find(int x){
if(fa[x]<0)return x;
fa[x]=find(fa[x]);
return fa[x];
}
void unite(int x,int y){
x=find(x);y=find(y);
if(x==y)return;
if(fa[x]<fa[y]){
fa[x]+=fa[y];
fa[y]=x;
}else{
fa[y]+=fa[x];
fa[x]=y;
}
}