#include <map>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 100100
using namespace std;
int tot;
int t;
int n;
int fa[N<<1];
map<int,int>m;
struct node
{
int x,y,z;
}a[N];
int find(int x)
{
if(fa[x]==x)return x;
else fa[x]=find(fa[x]);
return fa[x];
}
int cmp(node a,node b){return a.z>b.z;}
int main()
{
scanf("%d",&t);
while(t--)
{
tot=0;
m.clear();
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
}
for(int i=1;i<=n;i++)
{
if(!m[a[i].x])m[a[i].x]=++tot;
if(!m[a[i].y])m[a[i].y]=++tot;
}
for(int i=1;i<=tot;i++)fa[i]=i;
int flag=0;
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
{
int x=m[a[i].x],y=m[a[i].y];
int z=a[i].z;
if(z==1)
{
int fx=find(x),fy=find(y);
if(fx!=fy)
{
fa[fx]=fy;
}
}else
{
int fx=find(x),fy=find(y);
if(fx==fy){printf("NO\n");flag=1;break;}
}
}
if(!flag)printf("YES\n");
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
NOI 2015 DAY1 T1 程序自动分析 并查集+离散化
原文地址:http://blog.csdn.net/wzq_qwq/article/details/46955513