求调
查看原帖
求调
1269423
huge_wave楼主2024/9/8 12:20
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=4e5+10;
struct noid{
	int x,y;
}s0[N];
int p[N],ans;
unordered_map<int,int> mp;
int zzz(int x){
	if(p[x]!=x){
		p[x]=zzz(p[x]);
	}
	return p[x];
}
void ddd(){
	for(int i=1;i<=ans;i++){
		int q,w;
		q=s0[i].x;
		w=s0[i].y;
		if(zzz(mp[q])==zzz(mp[w])){
			cout<<"NO\n";
			return;
		}
	}
	cout<<"YES\n";
	return;
}
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin>>t;
	while(t--){
		mp.clear();
		int n,sum=0;
		ans=0;
		cin>>n;
		for(int i=1;i<=n;i++){
			p[i]=i;
		}
		for(int i=1;i<=n;i++){
			int a,b,s;
			cin>>a>>b>>s;
			if(s==0){
				ans++;
				s0[ans].x=a;
				s0[ans].y=b;
			}
			else{
				if(mp[a]==0){
					sum++;
					mp[a]=sum;
				}
				if(mp[b]==0){
					sum++;
					mp[b]=sum;
				}
				int aa,bb;
				aa=zzz(mp[a]);
				bb=zzz(mp[b]);
				p[aa]=bb;
			}
		}
		ddd();
	}
	return 0;
}            
2024/9/8 12:20
加载中...