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

    题意:说有n个学生,m个小组,然后0号童鞋感染了sars,跟感染者一组的也认为是感染者了,问一共多少感染者。

    解法:并查集……

    代码:

    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<string.h>
    #include<math.h>
    #include<limits.h>
    #include<time.h>
    #include<stdlib.h>
    #include<map>
    #include<queue>
    #include<set>
    #include<stack>
    #include<vector>
    #define LL long long
    using namespace std;
    int father[30005];
    int Find(int a)
    {
        if(father[a] != a)
            father[a] = Find(father[a]);
        return father[a];
    }
    void Union(int a, int b)
    {
        int c = Find(a), d = Find(b);
        father[c] = d;
    }
    int main()
    {
        int n, m;
        while(~scanf("%d%d", &n, &m) && !(n == 0 && m == 0))
        {
            for(int i = 0; i < n; i++)
                father[i] = i;
            while(m--)
            {
                int k;
                scanf("%d", &k);
                int x;
                if(k--) scanf("%d", &x);
                while(k--)
                {
                    int y;
                    scanf("%d", &y);
                    Union(x, y);
                }
            }
            int root = Find(0);
            int ans = 0;
            for(int i = 0; i < n; i++)
            {
                if(Find(i) == root)
                    ans++;
            }
            printf("%d
    ", ans);
        }
        return 0;
    }
    

      

  • 相关阅读:
    SpringDataRedis 常用命令
    Java 连接 Redis
    Java 循环标记
    初学Docker
    线程池,进程和线程的理解
    Linux-定时器任务
    Linux 命令2
    Linux命令
    Java基础整理
    微服务简介
  • 原文地址:https://www.cnblogs.com/Apro/p/4776858.html
Copyright © 2011-2022 走看看