20分求调(悬关
查看原帖
20分求调(悬关
649751
Blued楼主2023/7/8 16:12
#include <bits/stdc++.h>
#include <bits/extc++.h>
#define int long long
#define fir first
#define sec second
using namespace std;

const int N = 1e6 + 5;

int n;

int T;

__gnu_pbds :: gp_hash_table < int , int > fa;

int a , b , c;

string ans;

inline int read()
{
	int x = 0 , f= 1 ;char ch = getchar ();
	while (ch < '0' || ch > '9' ) {if (ch == '-') f = -1;ch = getchar ();}
	while (ch >= '0' && ch <= '9') {x = x * 10 + ch - 48;ch = getchar ();}
	return x * f;
}

inline void INIT ()
{
	ans = "YES";
	
	for (int i = 1;i <= (n << 1);i ++)
		fa[i] = i;
	
	return ;
}

inline int find (int x)
{
	if (fa[x] == x)
		return x;
	
	return fa[x] = find (fa[x]);
}

inline void join (int x , int y)
{
	int i = find (x) , j = find (y);
	
	if (i != j)
		fa[i] = j;
	
	return ;
}

main ()
{
	cin >> T;
	
	while (T --)
	{
		n = read ();
		
		INIT ();
		
		for (int i = 1;i <= n;i ++)
		{
			a = read () , b = read () , c = read ();
			
			if (c)
				join (a , b);
			
			else if(find (a) == find (b))
				ans = "NO";
		}
		
		cout << ans << '\n';
	}
}
2023/7/8 16:12
加载中...