/*

题目:

是说学生0怀疑有SARS病,跟他接触过的俱乐部的所有人以及他接触过的人再与别人接触,

都有可能有SARS病,要你求出给出的所有俱乐部人的名单,要你求出所有的嫌疑犯。。。

分析:

用并查集的方法做,具体实现是先定义n个森林,然后再把同一的人所在的森林合并在一起,

而并查集的改善方法有两种,我的使用的是压缩路径的方法

*/

#include <iostream>

#include <cstring>

#include <cstdio>

using namespace std;

const int X = 30010;

int parent[X],a[X],Rank[X],m,n,t;

int find_set(int x)               //路径压缩

{

if(x!=parent[x])

parent[x] = find_set(parent[x]);

return parent[x];

}

void union_set(int i,int j)

{

i = find_set(i);

j = find_set(j);

if(i!=j)

if(Rank[i]>Rank[j])         //等级越高,所在的树的高度越高

parent[j] = i;

else

{

parent[i] = j;

if(Rank[i]==Rank[j])

Rank[j]++;

}

}

int main()

{

freopen("sum.in","r",stdin);

freopen("sum.out","w",stdout);

int x,pre;

while(cin>>n>>m,n||m)

{

for(int i=0;i<n;i++)

{

parent[i] = i;

Rank[i] = 0;

}

for(int i=0;i<m;i++)

{

scanf("%d",&t);

if(t)              //只需找出俱乐部的第一个人与其他人并起来即可

scanf("%d",&pre);

for(int i=0;i<t-1;i++)

{

scanf("%d",&x);

union_set(pre,x);

}

}

pre = find_set(0);    //找到0所在的树的根节点编号,再用它与其他的人相比较

int ans = 1;

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

if(pre==find_set(i))

ans++;

cout<<ans<<endl;

}

return 0;

}

转载于:https://www.cnblogs.com/yejinru/archive/2012/03/22/2412068.html

poj 1611 The Suspects // hoj 1564 The Suspects 并查集相关推荐

  1. POJ 1703 Find them, Catch them(路径压缩并查集)

    POJ 1703 Find them, Catch them(路径压缩并查集) 2014年03月11日 20:13:54 阅读数:881 POJ 1703 Find them, Catch them( ...

  2. 【割边缩点】解题报告:POJ - 3694 - Network(Tarjan割边缩点 + LCA + 并查集优化)

    POJ - 3694 - Network 给定一张N个点M条边的无向连通图,然后执行Q次操作,每次向图中添加一条边,并且询问当前无向图中"桥"的数量.N≤105,M≤2∗105,Q ...

  3. POJ 1984 Navigation Nightmare 【经典带权并查集】

    任意门:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS   Memory Limit: 30000K To ...

  4. POJ 2492 A Bug's Life (带权并查集 向量偏移)

    题意 : 给你 n 只虫且性别只有公母, 接下来给出 m 个关系, 这 m 个关系中都是代表这两只虫能够交配, 就是默认异性, 问你在给出的关系中有没有与异性交配这一事实相反的, 即同性之间给出了交配 ...

  5. POJ 2492 A Bug's Life 带权并查集

    题意: 思路: mod2 意义下的带权并查集 如果两只虫子是异性恋,它们的距离应该是1. 如果两只虫子相恋且距离为零,则它们是同性恋. (出题人好猥琐啊) 注意: 不能输入一半就break出来.... ...

  6. POJ - 3694 Network(边双缩点+LCA+并查集优化)

    题目链接:点击查看 题目大意:给出一个由n个点组成的无向图,现在有m次操作,每次操作都会向图中增加一条无向边,每次操作后询问当前图中有多少个桥 题目分析:题意很好理解,思路也很好想,就是代码量有点小多 ...

  7. poj 1182 食物链(高级的带权并查集)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 76486   Accepted: 22742 Description ...

  8. POJ - 1611 The Suspects

    题目链接:1611 -- The Suspects 问题描述 思路 简单并查集 代码 #include <cstdio> #include <cstring> #include ...

  9. POJ 并查集 题目汇总 ——czyuan原创(转)

    继续数据结构的复习,本次的专题是:并查集. 并查集,顾名思义,干的就是"并"和"查"两件事.很多与集合相关的操作都可以用并查集高效的解决. 两个操作代码:    ...

最新文章

  1. ORACLE数据库对比表结构
  2. Quanta杂志长文翻译:通过信息论判定个体的边界
  3. Docker fence
  4. ubuntu 电源按钮操作_桌面应用|在 Ubuntu 中使用 Slimbook Battery Optimizer 切换电源模式...
  5. 《JAVA与模式》之模板方法模式
  6. rust8G内存够不够用_Rust是如何做到内存安全的
  7. linux服务器查配置信息失败,查看Linux服务器的配置信息
  8. 【渝粤题库】广东开放大学 跨文化商务沟通 形成性考核
  9. python中+=和=+的区别
  10. Linux 定时任务 定时备份mysql数据
  11. 华为vrrp默认优先级_华为vrrp配置
  12. 2019语言与智能技术竞赛
  13. 03.SpringBoot入门案例及详解
  14. java程序设计精编教程第3版电子版课后答案_Java程序设计精编教程-(第3版)-微课版...
  15. 统计信号处理基础 习题解答3-9
  16. for linux pdf转mobi_在Linux上,如何为Amazon Kindle转换各种电子书格式
  17. 机器学习(聚类七)——层次聚类的优化算法
  18. 小学计算机教室海报,小学美术制作海报教案.doc
  19. n维随机变量的分布函数和独立性
  20. 搞IT的you知道这些么……

热门文章

  1. Flink DDL的java代碼中的DeserializationSchemaFactory與TableSourceFactory報錯解決方案記錄彙總
  2. 获取国内国外flink的mailing list技术支持
  3. superset可视化-Time-series Percent Change
  4. Property or method xxxx is not defined on the instance but referenced during render.
  5. datatable移动一列的位置
  6. python2.7下面字节数组(ByteArray)和16进制字符串(HexString)转化
  7. python2.x环境下unicode乱码转中文显示的2种解决方案总结
  8. OpenCV学习笔记十一-findcounters函数
  9. 深度学习(四十四)——GAN的评估指标, DCGAN, WGAN-GP, CGAN, BEGAN EBGAN
  10. 红黑联盟c语言教程,1.1.2 C语言的特点