求Hack
查看原帖
求Hack
1284088
meifan666楼主2024/8/19 16:16
#include<bits/stdc++.h>
#define I return
#define AK 0
#define IOI ;
#define int long long
using namespace std;
int T,x,y,e,n;
map<int,int>fa1;
int find1(int x){
	if(fa1[x]==0)return x;
	if(fa1[x]!=x){
		fa1[x]=find1(fa1[x]);
	}
	return fa1[x];
}
void join1(int x,int y)
{
	fa1[find1(x)]=find1(y);
}
map<int,int>fa2;
bool flag=1;
signed main(){
	cin>>T;
	while(T--){
		flag=0;
		fa1.clear();
		fa2.clear();
		cin>>n;
		while(n--){
			cin>>x>>y>>e;
			if(flag)continue;
			if(e==1){
				if(x==y)continue;
				if(fa2[x]==y||fa2[y]==x){
					flag=1;
					continue;
				}
				join1(x,y);
			}else{
				if(find1(x)==find1(y)){
					flag=1;
					continue;
				}
				fa2[x]=y;
				fa2[y]=x;
			}
		}
		flag?cout<<"NO"<<'\n':cout<<"YES"<<'\n'; 
	}
	I AK IOI
}  
2024/8/19 16:16
加载中...