http://poj.org/problem?id=1611

题意是找出可能携带病毒的人数 就是把有交集的集合合并在一起 答案就是最后0所在集合的人数

并查集的一个主要思想就是合并两个不相交集合 在这个题中 也就是不含重复元素 比如 第一个集合中的1,2 就是把1, 2合并起来作为一个集合 同时把num【】更新一下 就是集合中的元素个数 把每个集合中的第一个数作为根节点 这样集合里的所有元素的祖先就是第一个数x

如果两个集合没有交集 比如1,2和10 11 12 13 14 15 这两个集合就不会合并 因为只是集合中的元素合并 1和2合并 10和其它的4个数合并 但是要是有交集1,2和0,1 这两个集合就会合并 1,2合并了 0,1合并了 那就相当于0,1,2合并了 所以最后找出0所在集合的祖先节点x num[x]就是最终答案

View Code

 1 #include <stdio.h>
 2 int num[30001],father[30001],deep[30001];
 3 void init(int m)//初始化 不多说了
 4 {
 5     int i;
 6     for(i = 0 ; i < m ; i++)
 7     {
 8         father[i] = i;
 9         num[i] = 1;
10         deep[i] = 0;
11     }
12 }
13 int find(int x)//并查集的查找 不多说
14 {
15     if(x!=father[x])
16     x = find(father[x]);
17     return father[x];
18 }
19 int union1(int x, int y)//合并 要是不懂去搜一下并查集的内容
20 {
21     x = find(x);
22     y = find(y);
23     if(x == y)
24     return;
25     if(deep[x]>=deep[y])//优化 将小的合并到大的上面
26     {
27         father[y] = x;
28         if(deep[x] == deep[y])
29         deep[x]++;
30         num[x] += num[y];
31     }
32     else
33     {
34         father[x] = y;
35         num[y]+=num[x];
36     }
37 }
38 int main()
39 {
40     int x, y, m, n, k,g;
41     while(scanf("%d%d", &m,&n)!=EOF)
42     {
43         if(m == 0&& n == 0)
44         break;
45         init(m);
46         g = n;
47         while(n--)
48         {
49             scanf("%d", &k);
50             scanf("%d",  &x);
51             k--;
52             while(k--)
53             {
54                 scanf("%d", &y);
55                 union1(x, y);
56             }
57         }
58         if(g == 0)
59         printf("1\n");
60         else
61         printf("%d\n", num[find(0)]);//找出0所在集合的祖先节点
62     }
63     return 0;
64 }

转载于:https://www.cnblogs.com/shangyu/archive/2012/07/05/2577867.html

poj1611(简答并查集)相关推荐

  1. 简析并查集[C/C++]

    并查集,是一个集合,主要为了实现了合并和查找两个功能 根据不同的题目需求进行使用 Union and Find Set (UFSet) 结构抽象: 树形结构 一般做题类型: 等价类 但是为了确保并查集 ...

  2. 并查集入门三连:HDU1213 POJ1611 POJ2236

    HDU1213 http://acm.hdu.edu.cn/showproblem.php?pid=1213 问题描述 今天是伊格纳修斯的生日.他邀请了很多朋友.现在是晚餐时间.伊格纳修斯想知道他至少 ...

  3. c++自带的可持久化平衡树?rope大法好!(超详细解答 + 5道例题讲解,可直接替代可持久化的线段树、并查集、平衡树!)

    整理的算法模板合集: ACM模板 目录 c++自带的可持久化平衡树?rope大法好! 1. 声明 2. 支持操作 char类型的rope int类型的rope 3. 具体的细节 4. "可持 ...

  4. 并查集板子:acwing836. 合并集合

    文章目录 并查集原理 并查集代码实现 并查集原理 并查集的常用操作: 将两个集合合并 询问两个元素是否在同一个集合中 并查集在近乎O(1)的时间内完成以上两个操作. 基本原理:每个集合用一棵树表示.树 ...

  5. POJ 1182 食物链,并查集的拓展

    http://poj.org/problem?id=1182 /******************************************************** 此道题目 前天看的时候 ...

  6. CodeForces - 1445E Team-Building(可撤销并查集)

    题目链接:点击查看 题目大意:给出一张有 n 个点和 m 条边的图,每个点都有一个种类,共有 k 个种类,现在要从 k 个种类中每次选出两种,对所有 C( k , 2 ) 种组合单独讨论,对于选出的两 ...

  7. 证明kruskal算法求解图的最小生成树具有贪心选择性质_将并查集应用在图论中的最小生成树算法——Kruskal...

    点击上方蓝字,和我一起学技术. 今天是算法和数据结构专题的第19篇文章,我们一起来看看最小生成树. 我们先不讲算法的原理,也不讲一些七七八八的概念,因为对于初学者来说,看到这些术语和概念往往会很头疼. ...

  8. POJ1182 食物链 —— 种类并查集

    题目链接:http://poj.org/problem?id=1182 食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: ...

  9. All men are brothers(并查集+思维 好题!!!)

    链接:https://ac.nowcoder.com/acm/contest/889/E 来源:牛客网 Amy asks Mr. B problem E. Please help Mr. B to s ...

最新文章

  1. commons-pool2-2.3 jar包_Java Jar包压缩、解压使用指南
  2. Python中列表推导式同filter和map的比较
  3. HighCharts解析之xAxis——x轴的样式
  4. 清理vs工程文件(python2.7)
  5. Linux 软件包管理常用命令 -- yum
  6. THUSC2019去不了记
  7. win7简单命令让PC变身无线热点,共享M9上网
  8. Photoshop 2021(Ps)下载安装及详细安装教程
  9. 5G WIFI DFS介绍
  10. 软件测试工具常用的都有哪些?
  11. lubuntu输入法设置_Ubuntu 设置中文输入法
  12. 【物联网毕设基础】单片机:红外遥控通信原理
  13. 房价与房租出现大幅“背离”?
  14. “海纳百川”下载器的使用方法
  15. 鹏鹏:python 机器学习初学者 三剑客介绍。
  16. 长铗:未来可被预言,区块链可被定义
  17. java开发工具(3)你真的会用IDEA么?(下)keyMap、Project Structure功能介绍
  18. 图像分割二十年,盘点影响力最大的10篇论文(含论文和源代码)
  19. Xilinx AXI USB2.0 Device IP 手册阅读笔记
  20. 绥芬河事业单位计算机,绥芬河市事业单位工资标准

热门文章

  1. linux删除静态arp,Linux如何清理ARP缓存?
  2. ACGAN(Auxiliary Classifier GAN)详解与实现(tensorflow2.x实现)
  3. sql 求相交的行_SQL相交
  4. main方法中args_public static void main(String [] args)– Java main方法
  5. python 命令行 参数_Python命令行参数
  6. asp.net 通过context.RewritePath和ashx开发接口
  7. C++前景如何,C++好学吗?
  8. 高阶函数-参数与返回值
  9. 为全面到来的数字化未来准备就绪 戴尔科技峰会赋能企业数字化发展新动力
  10. JVM 类加载机制详解