就样例全过,评测全错,下载数据都过了但是评测多了很多输出,求调
#include<bits/stdc++.h>
using namespace std;
const int N = 3e4 + 5;
int T, fa[N], dis[N], siz[N];
int find(int x) {
if(x == fa[x]) return x;
int t = fa[x];
fa[x] = find(fa[x]);
dis[x] += dis[t];
return fa[x];
}
void join(int x, int y) {
x = find(x);
y = find(y);
if(x == y) return;
fa[x] = y;
dis[x] += siz[y];
siz[y] += siz[x];
}
int main() {
cin >> T;
for(int i = 1; i <= N; i++) {
fa[i] = i;
siz[i] = 1;
}
char op;
int x, y;
while(T--) {
cin >> op >> x >> y;
if(op == 'M') {
join(x, y);
continue;
} else {
if(find(x) != find(y)) {
printf("-1\n");
} else {
printf("%d\n", abs(dis[x] - dis[y]) - 1);
}
}
}
return 0;
}