Wa#3求助,90pts
查看原帖
Wa#3求助,90pts
759098
tangzirui1016楼主2024/12/31 22:43

新年快乐!!!

#include<bits/stdc++.h>
using namespace std;
long long t,n,x[500005],y[500005],e[500005];
long long a[500005],cnt,fa[500005];
bool flag;
int find(int x){
	if(x==fa[x]) return x;
	return fa[x]=find(fa[x]);
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>t;
	while(t--){
		bool flag=0;
		cin>>n;
		memset(a,0,sizeof(a));
		cnt=0;
		for(int i=1;i<=n*4;i++) fa[i]=i;
		for(int i=1;i<=n;i++){
			cin>>x[i]>>y[i]>>e[i];
			a[++cnt]=x[i];
			a[++cnt]=y[i];
		} 
		sort(a+1,a+cnt+1);
		for(int i=1;i<=n;i++){
			int xx=lower_bound(a+1,a+cnt+1,x[i])-a,yy=lower_bound(a+1,a+cnt+1,y[i])-a;
			if(e[i]==1){
				if(find(xx)==find(yy+cnt)||find(xx+cnt)==find(yy)){
					flag=1;
					break;
				}
				fa[find(xx)]=find(yy);
				fa[find(xx+cnt)]=find(yy+cnt);
			}
			else{
				if(find(xx)==find(yy)||find(xx+cnt)==find(yy+cnt)){
					flag=1;
					break;
				}
				fa[find(xx)]=find(yy+cnt);
				fa[find(xx+cnt)]=find(yy);
			}
		}
		if(!flag) cout<<"YES\n";
		else cout<<"NO\n";
	}
	return 0;
}
2024/12/31 22:43
加载中...