样例过了可是只有11分,求帮助
#include <bits/stdc++.h>
#define ll long long
using namespace std;
template<typename T>
inline void in (T &x) {char c;int f=1;do {c=getchar ();if (c=='-') f=-1;} while (c>'9' || c<'0');for (x=0;c>='0' && c<='9';c=getchar ()) x=(x<<1)+(x<<3)+(c^48);x*=f;}
template<typename T>
inline void out (T x,char c) {if (x==0) {putchar ('0'),putchar (c); return ;}if (x<0)putchar ('-'),x=-x;int sta[20],k=0;while (x) sta[++k]=x%10,x/=10;while (k) putchar (sta[k--]+'0');putchar (c);}
const int N=3e4+5;
int t,x,y,a[N],fa[N],s[N];
char tp;
int find(int x){
if(fa[x]==x){
return fa[x];
}
s[x]+=s[fa[x]];
return fa[x]=find(fa[x]);
}
int main(){
// ios::sync_with_stdio(0);
// cin.tie(0);
// cout.tie(0);
// freopen("std.in","r",stdin);
in(t);
for(int i=1;i<N;i++){
fa[i]=i;
s[i]=0;
a[i]=1;
}
while(t--){
scanf(" %c",&tp);
in(x),in(y);
int fx=find(x),fy=find(y);
if(tp=='M'){
s[fx]+=a[fy];
fa[fx]=fy;
a[fy]+=a[fx];
a[fx]=0;
}
if(tp=='C'){
if(fx!=fy){
out(-1,'\n');
}
else{
out(abs(s[x]-s[y])-1,'\n');
}
}
}
return 0;
}