zoukankan      html  css  js  c++  java
  • bestcoder #68 A(并查集)

    每次都是在最后十几分钟才想出来。。并不能交了T_T

    w是0的话merge(u,v)

    ans[i]就是i所在集合的元素个数

    #include"cstdio"
    #include"queue"
    #include"cmath"
    #include"stack"
    #include"iostream"
    #include"algorithm"
    #include"cstring"
    #include"queue"
    #include"map"
    #include"vector"
    #define ll long long
    
    using namespace std;
    const int MAXN = 100500;
    const int MAXE = 200500;
    const int INF = 0x3f3f3f;
    
    int f[MAXN],sum[MAXN];
    
    int fa(int x){
        return x==f[x]?x:f[x]=fa(f[x]);
    }
    
    void merge(int a,int b){
        a=fa(a);
        b=fa(b);
        f[a]=b;
    }
    
    int main(){
        //freopen("in.txt","r",stdin);
        int n,T;scanf("%d",&T);
        while(T--){
            scanf("%d",&n);
            for(int i=1;i<=n;i++) f[i]=i;
            memset(sum,0,sizeof(sum));
            for(int i=1;i<n;i++){
                int u,v,w;scanf("%d%d%d",&u,&v,&w);
                if(!w) merge(u,v);
            }
            for(int i=1;i<=n;i++) sum[fa(i)]++;
            int ans,flag=0;
            for(int i=1;i<=n;i++){
                if(flag) ans^=sum[fa(i)];
                else ans=sum[fa(i)],flag=1;
            }
            cout<<ans<<endl;
        }
        return 0;
    }
  • 相关阅读:
    多表查询,连表查询
    mysql数据概念难点
    mysql练习题
    linux下 redis
    nginx安装
    八皇后问题 OpenJ_Bailian
    Prime Ring Problem hdu-1016 DFS
    Oil Deposits hdu-1241 DFS
    Highways
    畅通工程再续
  • 原文地址:https://www.cnblogs.com/luxiaoming/p/5095318.html
Copyright © 2011-2022 走看看