POJ 1611

POJ 1611

题意

有n个人参加了m个社团,同一个社团互相接触的人有感染非典的概率,已知0号同学是疑似病例,求总的疑似病例的人数。

思路

求并查集。

#include <iostream>
#include <cstdio>

using namespace std;

const int MAXN = 300001;
int pre[MAXN];
int n,m;
int find(int i){
    int j = i,temp;
    while(pre[i] != i)
        i = pre[i];
    while(j != i){
        temp = pre[i];
        pre[j] = i;
        j = temp;
    }
    return i;
}

void merge(int b,int c){
    int t1 = find(b);
    int t2 = find(c);
    if (t2 != t1){
        pre[t2] = t1;
    }
    return;
}

int main(){
    int i,j,k,c,d,sum;
    while((scanf("%d%d",&n,&m)==2)&&(n||m)){
        for(i = 0; i<n;i++){
            pre[i] = i;
        }
        for (int i = 1; i <= m; ++i)
        {
            scanf("%d%d",&k,&d);
            for(j = 1;j<k;j++){
                scanf("%d",&c);
                merge(c,d);

            }
        }
        c = find(0);
        sum = 1;
        for(i=1;i<n;i++){
            if(find(i) == c)
                sum++;
        }
        printf("%d\n",&sum);
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • POJ 1611 题意 有n个人参加了m个社团,同一个社团互相接触的人有感染非典的概率,已知0号同学是疑似病例,求...
    vanadia阅读 305评论 0 0
  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 2,656评论 0 5
  • 营销人员电销有时会陌拜客户,但经常会吃闭门羹。如何让客户没有办法拒绝你,听你介绍完产品呢,我整理了13句话,适用企...
    文泉小火花阅读 1,241评论 9 10
  • 计划: 1. 早起+喝水 2. 项目例会+日常工作 3. 运动+练字+读书+记账 实际: 1. 完成。我觉得我参加...
    lrb2017阅读 117评论 0 2
  • 千峰PHP 又是一年毕业季,不知有多少迷茫的孩子还在匆忙的选择自己的路,在多条路中纠结,最近不时有同事朋友过来问我...
    往事随风009阅读 156评论 0 0