代码:
#include<bits/stdc++.h>
using namespace std;
const int N=3e4+10;
int fa[N],siz[N],num[N];
int n,m;
int find(int x){
if(fa[x]==x) return x;
num[x]=num[x]+num[fa[x]];
return fa[x]=find(fa[x]);
}
void merge(int x,int y){
int fx=find(x);
int fy=find(y);
fa[fx]=fy;
num[fx]=siz[fy];
siz[fy]+=siz[fx];
return;
}
int main(){
cin>>m;
for(int i=1;i<=N;i++){
fa[i]=i;
siz[i]=1;
}
char q;
int x,y;
for(int i=1;i<=m;i++){
cin>>q>>x>>y;
if(q=='M'){
merge(x,y);
}else{
if(find(x)!=find(y)) {
cout<<-1<<endl;
}else{
cout<<abs(siz[x]-siz[y])-1;
}
}
}
return 0;
}