#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll T,x,y,as,bs,fa[30005],size[30005],dis[30005];
char op;
ll find(ll s){
if(fa[s]==s)return fa[s];
ll fs=find(fa[s]);
dis[s]+=dis[fa[s]];
return fa[s]=fs;
}
void Union(ll a,ll b){
as=find(a);bs=find(b);
fa[as]=bs;
dis[as]+=size[bs];
size[bs]+=size[as];
}
int main()
{
cin>>T;
for(ll i=1;i<=30000;i++){
fa[i]=i;
size[i]=1;
dis[i]=0;
}
while(T--){
cin>>op>>x;
if(op=='M'){
cin>>y;
Union(x,y);
}
if(op=='C')cout<<dis[x]<<"\n";
}
return 0;
}
基本上就是带权并查集模板的写法,看了好久都没看出哪里错了,交上去只对2个点