题意:

      有一个人生病了,和他一个社团或者间接和他有联系的人都会生病,问一共有多少人生病了。

思路:

      比较简单和基础的题,带权并查集中的一种,就是记录更新集合元素个数,这个题目我是开始的时候每个人自己在自己的集合里,元素个数是1,然后在多开出来m个集合,让第i个社团直接映射到i+n个集合,元素个数一开始是0,然后就是简单更新了,还有就是注意下两个人已经属于同一个集合的时候就直接跳过,不用处理。

#include<stdio.h>

#include<string.h>

#define N 30000 + 500 + 10

int mer[N] ,sum[N];

int finds(int x)

{

    return x == mer[x] ? x : mer[x] = finds(mer[x]);

}

int main ()

{

    int n ,m ,i ,a ,k;

    while(~scanf("%d %d" ,&n ,&m) && n + m)

    {

        for(i = 1 ;i <= n + m ;i ++)

        {

            if(i <= n) sum[i] = 1;

            else sum[i] = 0;

            mer[i] = i;

        }

        for(i = 1 ;i <= m ;i ++)

        {

            scanf("%d" ,&k);

            int y = finds(i+n);

            while(k--)

            {

                scanf("%d" ,&a);

                ++a;

                int x = finds(a);

                if(x == y) continue;

                mer[x] = y;

                sum[y] += sum[x];

            }

        }

        int x = finds(1);

        printf("%d\n" ,sum[x]);

    }

    return 0;

}

最新文章

  1. 正确理解ThreadLocal
  2. document的一点点
  3. 双机相关知识(原理、LVM、Raid技术)
  4. Python:字符编码详解
  5. Java for LeetCode 189 Rotate Array
  6. SVG 2D入门5 - 颜色的表示
  7. java抽象类和接口详解
  8. RocksDB介绍:一个比LevelDB更彪悍的引擎
  9. STL内存管理器的分配策略
  10. php登录
  11. 拥抱.NET Core系列:Logging (1)
  12. websocket教程(一) 非常有趣的理解websocket
  13. Matlab 将两个图像进行分离 已知其中一个图像
  14. Q: Is Consul eventually or strongly consistent?
  15. cordova性能优化方法
  16. [Optimization] Greedy method
  17. TCPCopy 使用方法
  18. 关于Kynseed
  19. hdu 1430
  20. nyoj素数环

热门文章

  1. 五十:代码审计-PHP无框架项目SQL注入挖掘技巧
  2. 面试必备——Java多线程与并发(二)
  3. Prometheus时序数据库-数据的插入
  4. AtCoder Beginner Contest 171-175 F
  5. mongodb 聚合(aggregate)
  6. 爬虫必知必会(5)_scrapy框架_基础
  7. WPF 基础 - 资源
  8. [HDU5592] ZYB&#39;s Premutation
  9. TIOBE 编程语言排行榜
  10. CSS行内元素盒模型