#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int n,m,w;
int vis[3000000];
int dis[3000000];
int fa[3000000];
void init()
{
int i,j,k;
for(int i=1; i<=n; i++)
{
vis[i]=1;
dis[i]=0;
}
}
int findfather(int x)
{
int a;
if(x==fa[x])
return x;
else
{
a=fa[x];
fa[x]=findfather(a);
dis[x]+=dis[a];
}
return fa[x];
}
void join(int nowx,int nowy)
{
int newx=findfather(nowx);
int newy=findfather(nowy);
if(newx!=newy)
{
fa[newx]=newy;
dis[newx]=vis[newy];
vis[newy]+=vis[newx];
}
}
int main()
{
cin >> n;
for(int i=1; i<=n; i++)
fa[i]=i;
init();
int o=n;
char ch;
int A,B,e;
while(n--)
{
cin >> ch;
if(ch=='M')
{
scanf("%d%d",&A,&B);
if(findfather(A)!=findfather(B))
{
join(A,B);
}
}
else if(ch=='C')
{
scanf("%d",&e);
findfather(e);
printf("%d\n",dis[e]);
}
}
}
带权并查集
最新推荐文章于 2025-05-05 14:12:43 发布