#include<bits/stdc++.h>
using namespace std;
const int N = 50010;
int t;
int father[N] = {};
int k[N] = {};
int l[N] = {};
int find(int x)
{
if(father[x] == x)
{
return x;
}
int flag = find(father[x]);
k[x] += k[father[x]];
return father[x] = flag;
}
int main()
{
cin >> t;
char op;
for(int i = 1;i <= N;++i)
{
father[i] = i;
l[i] = 1;
}
int i , j;
for(int v = 1;v <= t;++v)
{
int findi , findj;
cin >> op >> i >> j;
if(op == 'M')
{
findi = find(i);
findj = find(j);
father[findi] = findj;
k[findi] = l[findj];
l[findj] += l[findi];
}
else
{
if(find(i) == find(j))
{
cout << max(k[i] , k[j]) - min(k[i] , k[j]) - 1 << endl;
}
else
{
cout << -1 << endl;
}
}
}
return 0;
}
https://www.luogu.com.cn/record/201327527