参考代码
cookiebus
2024-02-04 18:49:13
13
返回题目
include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10;
int f[N], d[N], sz[N], n, q, T, i, j;
char op;
int find(int x) {
if (f[x] == x)
return x;
int rt = find(f[x]);
// f[x] = rt
d[x] = d[x] + d[f[x]];
return f[x] = rt;
}
int main() {
cin >> T;
for (int i = 1; i <= 30000; ++i) {
f[i] = i;
d[i] = 0;
sz[i] = 1;
}
while (T--) {
cin >> op >> i >> j;
int x = find(i);
int y = find(j);
if (op == 'M') {
if (x == y)
continue;
f[x] = y;
d[x] = sz[y];
sz[y] += sz[x];
} else {
if (x != y) {
cout << -1 << endl;
} else {
cout << abs(d[i] - d[j]) - 1 << endl;
}
}
}
return 0;
}
{{ vote && vote.total.up }}