zoukankan      html  css  js  c++  java
  • 并查集

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #define N 1000010
    using namespace std;
    int fa[N];
    int find(int x)
    {
        if(fa[x]==x) return x;
        int t=find(fa[x]);
        fa[x]=t;
        return t;
        //return fa[x]==x?x:fa[x]=find(fa[x]);
    }
    void merge(int x,int y)
    {
        x=find(x);
        y=find(y);
        if(x==y) return;
        fa[x]=y;
    }
    int m,x[N],y[N],f[N];
    void doit()
    {
        memset(fa,0,sizeof(fa));
        for(int i=1;i<=1000000;i++) fa[i]=i;
        cin>>m;
        for(int i=1;i<=m;i++)
        {
            cin>>x[i]>>y[i]>>f[i];
            if(f[i]==1) merge(x[i],y[i]);
        }
        bool ans=true;
        for(int i=1;i<=m;i++)
        {
            if(f[i]==0)
            {
                if(find(x[i])==find(y[i])) ans=false;
            }
        }
        puts(ans?"YES":"NO");
    }
    int main()
    {   
    
        int T;
        cin>>T;
        while(T--) doit();
    }
  • 相关阅读:
    第十三周
    意见评论
    第十二周
    冲刺10
    冲刺9
    冲刺8
    团队冲刺第二十二天-KeepRunningAPP
    找水王
    第十四周总结
    搜狗输入法评价
  • 原文地址:https://www.cnblogs.com/zhaoxuelin/p/12652897.html
Copyright © 2011-2022 走看看