40pts求助
查看原帖
40pts求助
932104
ChenZaiZe001楼主2024/6/1 15:09

#2 WA 哪里写错了

#include<bits/stdc++.h>
using namespace std;
#define N 100010
int t,n,u[N],v[N],e[N],fa[N*2],flag;
map<int,int> b;
int f(int x){
	return x==fa[x]?x:fa[x]=f(fa[x]);
}
int main(){
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		flag=1,b.clear(),iota(fa,fa+n*2,0);
		for(int i=0;i<n;i++){
			scanf("%d%d%d",&u[i],&v[i],&e[i]);
			b[u[i]]=i*2,b[v[i]]=i*2+1;
		}
		for(int i=0;i<n;i++)
			if(e[i]) fa[f(b[u[i]])]=f(b[v[i]]);
		for(int i=0;i<n;i++)
			if(!e[i]&&f(b[u[i]])==f(b[v[i]])) printf("NO\n"),flag=0;
		if(flag) printf("YES\n");
	}
}
2024/6/1 15:09
加载中...