可以离散化一下,也可以用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; } }