#include<bits/stdc++.h>
using namespace std;
const int N = 3e5+5;
int t, fa[N], d[N], h[N], siz[N];
int find(int x) {
if (fa[x] == x) return x;
int r = find(fa[x]);
d[x] += d[fa[x]];
return fa[x] = r;
}
void merge(int x, int y) {
int rx = find(x);
int ry = find(y);
fa[rx] = ry;
d[rx] = siz[ry];
siz[ry] += siz[rx];
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> t;
for (int i = 1; i <= N; i++) {
fa[i] = i;
siz[i] = 1;
}
while (t--) {
char op;
int x, y;
cin >> op >> x >> y;
if (op == 'M')
merge(x, y);
else {
int rx = find(x);
int ry = find(y);
if (rx != ry)
cout << "-1\n";
else
cout << abs(d[x] - d[y]) - 1 << "\n";
}
}
return 0;
}
这份代码错的,但样例能过
悬棺求条qwq