RE可能是什么原因
查看原帖
RE可能是什么原因
704668
WZWZWZWY楼主2024/4/4 20:02
#include <bits/stdc++.h>
using namespace std;
map <int, int> mp;
int fa[100005], a[100005], b[100005];

int find(int x) {
	return fa[x] == x? x : fa[x] = find(fa[x]);
}

int main() {
	int T, n, cnt, cnta, x, y, e;
	cin >> T;
	while (T--) {
		mp.clear();
		cnt = 0; cnta = 0;
		cin >> n;
		for (int i = 1; i <= 100000; i++) fa[i] = i;
		for (int i = 1; i <= n; i++) {
			cin >> x >> y >> e;
			if (!mp[x]) mp[x] = ++cnt;
			if (!mp[y]) mp[y] = ++cnt;
			if (e == 1) {
				int fax = find(mp[x]), fay = find(mp[y]);
				if (fax != fay)
					fa[fax] = fay;
			} else {
				a[++cnta] = mp[x];
				b[cnta] = mp[y];
			}
		}
		bool t = 1;
		for (int i = 1; i <= cnta; i++) {
			if (find(a[i]) == find(b[i])) t = 0;
		}
		if (!t) cout << "NO\n";
		else cout << "YES\n";
	}
}
2024/4/4 20:02
加载中...