zoukankan      html  css  js  c++  java
  • POJ 1611 The Suspects

    传送门:http://poj.org/problem?id=1611

    题意:

    0是SARS携带者,如果有人和他在一组那么他也会被感染。

    而在输入的每一个小组,假定小组的第一个成员就是这一组的根,该组的所有成员都归并在在第一小组所在的那颗树(集合)上

    最和在查询和编号为0的学生在同一个组的同学有多少人。

    实现代码:

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    const int maxn=300000;
    int par[maxn],rk[maxn];
    
    void init(int n){
        for(int i=0;i<n;i++){
            par[i]=i;
            rk[i]=0;
        }
    }
    
    
    
    int findfa(int u){
        if(par[u]==u)
            return u;
        else{
            return par[u]=findfa(par[u]);
        }
    }
    
    void unit(int u,int v){
        u=findfa(u);
        v=findfa(v);
        if(u==v)
            return;
    
        if(rk[u]>rk[v])
            par[v]=u;
        else{
            par[u]=v;
            if(rk[u]==rk[v])
                rk[v]++;
        }
    }
    
    int main(){
        int n,m;
        while(scanf("%d%d",&n,&m)&&(n||m)){
            init(n);
            for(int i=0;i<m;i++){
                int k;
                scanf("%d",&k);
    
                int f;
                if(k>=1)
                    scanf("%d",&f);
                for(int j=1;j<k;j++){
                    int u;
                    scanf("%d",&u);
                    unit(f,u);
                }
            }
    
            int sum=1;
            int zero=findfa(0);
            for(int i=1;i<n;i++)
                if(zero==findfa(i))
                   sum++;
            printf("%d
    ",sum);
        }
        return 0;
    }
    自己选的路,跪着也要把它走完------ACM坑
  • 相关阅读:
    H5 WebSocket
    JS call()、apply()、bind()
    JS中this指向问题
    JS GET POST请求
    php 常用get post http请求
    php 开启redis
    egret接入华为快应用6004
    PHP生成公私钥,签名和验签
    JS数组去重
    Oracle第九课
  • 原文地址:https://www.cnblogs.com/IKnowYou0/p/6488874.html
Copyright © 2011-2022 走看看