#90分 2TLE求助
查看原帖
#90分 2TLE求助
1643506
NiuYeye_fandouhuayan楼主2025/1/31 16:35
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
int t,n;
vector<pair<int,int> > qur;
unordered_map<int, int> mp;
int p[N];
int find(int x){
	if(p[x]!=x)p[x]=find(p[x]);
	return p[x];
}
void merge(int a,int b){
	p[find(b)]=find(a);
}
int main(){
	cin>>t;
	while(t--){
		cin>>n;
		int cnt = 0;
		bool flag = true;
		for(int i=0;i<=N;i++)p[i]=i;
		while(n--){
			int i,j,e;
			cin>>i>>j>>e;
			if(mp.find(i)==mp.end())mp[i]=cnt++;
			if(mp.find(j)==mp.end())mp[j]=cnt++;
			if(e==1){
				merge(mp[i],mp[j]);
			}
			else if(e==0)qur.push_back({mp[i],mp[j]});
			for(int k=0;k<qur.size();k++){
				int x = qur[k].first,y=qur[k].second;
				if(find(x)==find(y)){
					flag = false;
					break;
				}
			}
		}
	    mp.clear();
		qur.clear();
		if(flag)cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
}
2025/1/31 16:35
加载中...