#include<bits/stdc++.h>
using namespace std;
int T,n=200010,m,x,y,fa[100010];
int tot=0,qa[100010],qb[100010];
map<int,int>mp;
int cnt=0;
int lsh(int x)
{
if(mp.count(x))
return mp[x];
//cout<<cnt<<endl;
return mp[x]=cnt++;
}
struct node{
int a,b,opt;
}r[100010];
int find(int x)
{
if(x!=fa[x])
fa[x]=find(fa[x]);
return fa[x];
}
void csh()
{
tot=0;
memset(qa,0,sizeof(qa));
memset(qb,0,sizeof(qb));
for(int i=0;i<=n;i++)
fa[i]=i;
cnt=0;
}
bool fake_main()
{
cin>>m;
csh();
for(int i=1;i<=m;i++)
{
cin>>r[i].a>>r[i].b>>r[i].opt;
r[i].a=lsh(r[i].a);
r[i].b=lsh(r[i].b);
if(r[i].opt==1)
fa[find(r[i].a)]=find(r[i].b);
}
for(int i=1;i<=m;i++)
fa[i]=find(fa[i]);
for(int i=1;i<=m;i++)
if(r[i].opt==0)
{
if(find(r[i].a)==find(r[i].b))
return false;
}
return true;
}
int main()
{
cin>>T;
while(T--)
{
if(fake_main())
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
return 0;
}
调了一个小时啦,一个TLE,两个WA,心态炸了