N如果再开大的话就会爆T
WA了2、3,有没有dalao帮忙找一下错
#include <bits/stdc++.h>
#define N 200005
#define int long long
using namespace std;
int n;
map<int,int>f;
struct Nodes{
int x,y,opt;
}q[N];
bool cmp(Nodes x,Nodes y){return x.opt>y.opt;}
int getf(int x)
{
if(f[x]==x)return x;
return f[x]=getf(f[x]);
}
void add(int u,int v)
{
int fu=getf(u),fv=getf(v);
if(fu!=fv)f[fv]=fu;
}
signed main()
{
int T;cin>>T;
while(T--)
{
cin>>n;int maxn=0;
for(int i=1;i<=n;i++)
{
cin>>q[i].x>>q[i].y>>q[i].opt;
maxn=max(maxn,max(q[i].x,q[i].y));
}
sort(q+1,q+1+n,cmp);bool flag=false;
for(int i=1;i<N;i++)f[i]=i;
for(int i=1;i<=n;i++)
{
if(q[i].opt==1)add(q[i].x,q[i].y);
else
{
if(getf(q[i].x)==getf(q[i].y))
{
cout<<"NO\n";
flag=true;
break;
}
else add(q[i].x,q[i].y+maxn),add(q[i].x+maxn,q[i].y);
}
}
if(!flag)cout<<"YES\n";
}
return 0;
}