#include<stdio.h>
int fa[100001],cnt[100001];
void init(int n)
{
int i;
for(i=1;i<=n;i++)
{
fa[i]=i;
cnt[i]=1;
}
}
int getf(int x)
{
if(fa[x]==x) return x;
fa[x]=getf(fa[x]);
return fa[x];
}
int Union(int x,int y)
{
x=getf(x);
y=getf(y);
if(x==y) return x;
fa[y]=fa[x];
cnt[x]+=cnt[y];
cnt[y]=0;
}
int main()
{
int n,m,x,y,z,num=0;
char ch;
while(scanf("%d%d",&n,&m)!=EOF)
{
init(n);
if(num) printf("\n");
printf("Case %d:\n",++num);
while(m--)
{
scanf(" %c",&ch);
if(ch=='M')
{
scanf("%d%d",&x,&y);
Union(x,y);
}
else if(ch=='Q')
{
scanf("%d",&z);
printf("%d\n",cnt[getf(z)]);
}
}
}
return 0;
}
ZOJ 2833
最新推荐文章于 2020-05-06 18:13:20 发布