题解代码和我的代码区别,全wa(悬棺)
查看原帖
题解代码和我的代码区别,全wa(悬棺)
1331158
yuer111楼主2025/7/24 19:51
#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

2025/7/24 19:51
加载中...