#2 TLE 90pts 求调(不太会离散化)
查看原帖
#2 TLE 90pts 求调(不太会离散化)
1259521
BUGATTI_BOLIDE楼主2025/7/30 12:03
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int T,one_x[N],one_y[N],zero_x[N],zero_y[N];
map<int,int>fa;
int find(int x){
	if(fa[x]==x)return x;
	return fa[x]=find(fa[x]);
}
void add(int x,int y){
	if(find(x)==find(y))return;
	fa[find(x)]=find(y);
}
void solve(){
	int n,cnt_one=0,cnt_zero=0,flag=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		int x,y,z;
//		cin>>x>>y>>z;
		scanf("%d%d%d",&x,&y,&z);
		if(z)one_x[++cnt_one]=x,one_y[cnt_one]=y;
		else zero_x[++cnt_zero]=x,zero_y[cnt_zero]=y;
		fa[x]=x,fa[y]=y;
	}
	for(int i=1;i<=cnt_one;i++)
		add(one_x[i],one_y[i]);
	for(int i=1;i<=cnt_zero;i++)
		if(find(zero_x[i])==find(zero_y[i])){
//			cout<<"NO\n";
			printf("NO\n");
			flag=1;
			break;
		}
	if(flag)return ;
//	cout<<"YES\n";
	printf("YES\n");
}
signed main(){
//	ios::sync_with_stdio(0);
//	cin.tie(0);
//	cout.tie(0);
	
	cin>>T;
	while(T--)
		solve();
	return 0;
}
2025/7/30 12:03
加载中...