样例全过,A了两个点
#include<bits/stdc++.h>
#define int long long
#define ci const int
#define elif else if
using namespace std;
ci e=1e5+10,E=2e5+10;
int t,n,fa[E],dis[E],tot,flag;
struct node{
int a,b,e;
}a[e];
int get(int x){
return fa[x]==x?x:fa[x]=get(fa[x]);
}
signed main(){
ios::sync_with_stdio(0),
cin.tie(0),cout.tie(0);
cin>>t;
while(t--){
memset(a,0,sizeof a);
memset(dis,0,sizeof dis);
memset(fa,0,sizeof fa);
tot=0,flag=1;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i].a>>a[i].b>>a[i].e,dis[++tot]=a[i].a,dis[++tot]=a[i].b;
sort(dis+1,dis+1+tot);
tot=unique(dis+1,dis+1+tot)-dis+1;
for(int i=1;i<=tot;i++)fa[i]=i;
for(int i=1;i<=n;i++){
if(a[i].e)
fa[lower_bound(dis+1,dis+1+tot,a[i].a)-dis]=get(fa[lower_bound(dis+1,dis+1+tot,a[i].b)-dis]);
else{
if(get(fa[lower_bound(dis+1,dis+1+tot,a[i].a)-dis])==get(fa[lower_bound(dis+1,dis+1+tot,a[i].b)-dis]))flag=0;
}
}
if(flag)cout<<"YES\n";
else cout<<"NO\n";
}
return 0;
}