#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll read()
{
short f=1;ll x=0;char s=getchar();
while(s<48||s>57){f=s=='-'?-1:1;s=getchar();}
while(s>=48&&s<=57){x=x*10+s-48;s=getchar();}
return x*f;
}
int f[30001],d[30001],n[30001];
int found(int x)
{
if(x==f[x])return x;
int y=found(f[x]);
d[x]=d[x]+d[f[x]];
f[x]=y;return f[x];
}
int main()
{
for(int i=1;i<=30000;++i){f[i]=i;n[i]=1;}
int t=read(),x,y,a,b;char s;
while(t--)
{
scanf("%c%d%d",&s,&x,&y);
a=found(x);b=found(y);
if(s=='M')
{
if(a!=b)
{
d[a]=d[a]+n[b];f[a]=b;
n[b]=n[b]+n[a];n[a]=0;
}
}
else
{
if(a!=b)puts("-1");
else printf("%d\n",abs(d[x]-d[y])-1);
}
}
return 0;
}
代码已经改得变成题解的复制品了,但是题解可以成为题解,而我的代码仍然是0分(悲)