对没错我压行了
压行体验还行呀其实
#include<bits/stdc++.h>
using namespace std;
const int N = 30010;
int p[N], d[N], l[N], t, a, b, pa, pb;
char op;
int find(int x)
{
if(x != p[x]) find(p[x]), d[x] += d[p[x]], p[x] = p[p[x]];
return p[x];
}
int main()
{
for(int i = 1; i < N; i ++) p[i] = i, l[i] = 1;
cin >> t;
while(t --)
{
cin >> op >> a >> b;
if(op == 'M') pa = find(a), pb = find(b), d[pa] = l[pb], l[pb] += l[pa], p[pa] = pb;
else if(find(a) == find(b)) cout << abs(d[a] - d[b]) - 1 << endl;
else puts("-1");
}
}