#2TLE求助
查看原帖
#2TLE求助
264548
Tangent233楼主2020/11/3 16:25
#include<bits/stdc++.h>
using namespace std;
map <int,int> fa;
vector < pair<int,int> > cha;
int find1(int x)
{
    if(fa[x]==0) return 0;
    if(fa[x]==x) return x;
    else return fa[x]=find1(fa[x]);
}
void u(int x,int y)//将y的父亲置为x
{
    int fx=find1(x),fy=find1(y);
    fa[fy]=fx;
}
int main()
{
	freopen("P1955_2.in","r",stdin);
    ios::sync_with_stdio(false);
    int k;cin>>k;
    while(k--)
    {
        cha.clear();
        fa.clear();
        int num;cin>>num;
        for(int i=1;i<=num;i++)
        {
            int a,b,c;cin>>a>>b>>c;
            if(c==0)
                cha.push_back(make_pair(a,b));
            else
            {
                if(fa[a]==0) fa[a]=a;
                if(fa[b]==0) fa[b]=b;
                u(a,b);
            }
        }
        bool check=1;
        for(int i=0;i<cha.size();i++)
        {
            int a=find1(cha[i].first),b=find1(cha[i].second);
            if(a==b&&(!(a==0&&b==0)))
            {
                cout<<"NO"<<endl;
                check=0;
                break;
            }
        }
        if(check) cout<<"YES"<<endl;
    }
    return 0;
}

是不是我不该用裸的map

2020/11/3 16:25
加载中...