可以离散化一下,也可以用map存;

#include<bits/stdc++.h>
using namespace std;
#define close_stdin  ios::sync_with_stdio(false)
int t;
unordered_map<int,int> mp;
vector<pair<int,int> > va;
int find(int x)
{
    return mp[x]==x? x:mp[x]=find(mp[x]);
}
int merge(int x,int y)
{
    mp[find(x)]=find(y);
}
int main()
{
    close_stdin;
    cin>>t;
    int n;
    while(t--)
    {
        int cnt=0;
        cin>>n;
        int j=0;
        mp.clear();va.clear();
        for(int i=1;i<=n;i++)
        {
            int x,y,d;
            cin>>x>>y>>d;
            if(!mp[x]) mp[x]=x;
            if(!mp[y]) mp[y]=y;
            if(d==1)
            {
                merge(x,y);
            }
            else{
               va.emplace_back(make_pair(x,y));
            }
        }
        for(auto it:va)//va里存的是不相等的两个,如果相等,则矛盾
        if(find(it.first)==find(it.second)) {cnt++;break;}
        if(cnt) cout<<"NO"<<endl;
        else cout<<"YES"<<endl;
    }
}