玄关 | P1955 WA 求助
查看原帖
玄关 | P1955 WA 求助
812740
YMnRb楼主2023/12/17 20:44

题目

评测记录

代码:

#include <iostream>
#include <algorithm>
using namespace std;

int t, n, i[100005], j[100005], e[100005], a[200005], x[100005], xn;
int find(int aa) {
	if (x[aa] == aa) return aa;
	return x[aa] = find(x[aa]);
}
int main() {
	cin >> t;
	while (t--) {
		cin >> n;
		for (int ii = 0; ii < n; ++ii)
			cin >> i[ii] >> j[ii] >> e[ii],
			a[ii << 1] = i[ii], a[ii << 1 | 1] = j[ii];
		sort(a, a + (n << 1));
		xn = unique(a, a + (n << 1)) - a;
		for (int xi = 0; xi < xn; ++xi) x[xi] = xi;
		for (int ii = 0; ii < n; ++ii) if (e[ii])
			x[find(lower_bound(a, a + xn, i[ii]) - a)] = x[find(lower_bound(a, a + xn, j[ii]) - a)];
		for (int ii = 0; ii < n; ++ii) if (!e[ii])
			if (find(lower_bound(a, a + xn, i[ii]) - a) == find(lower_bound(a, a + xn, j[ii]) - a))
				goto NO;
		cout << "YES\n";
		continue;
		NO:
			cout << "NO\n";
	}
}
2023/12/17 20:44
加载中...