题目:http://www.fjutacm.com/Problem.jsp?pid=2021

题意大概就是输入n,m,分别代表总共n个人,m组,每组输入k,后面再输入k个人表示是一组的,0号是嫌疑者,输出和0在一组的人数(嫌疑者的人数)。

想看题目的点击这里哦:--->题目

友情链接:--->点我

咳咳,下面就是代码分析阶段,请看:

#include<stdio.h>
int fa[30005],n,rak[30005];
void chushihua()//初始化,把每个人的父节点先设为自己。rak就是代表的人数(同一个集合的人数)
{for(int i=0;i<n;i++)//假设开始有n个集合 {fa[i]=i;rak[i]=1;}
}
int find(int x)
{int r=x,temp;while(r!=fa[r])r=fa[r];while(x!=fa[x])//这里是路径压缩,让这棵树扁平化,把每个节点的父节点都直接变成根节点(让树变粗)。 {temp=fa[x];fa[x]=r;x=temp;}return x;
}
void hebing(int a,int b)//合并操作,也有点小细节
{a=find(a);b=find(b);if(a!=b){fa[b]=a;rak[a]+=rak[b];//这里就把人数统计出来了,注意这里的a,b的位置。 }
}
int main(void)
{int m,k,a,b;//这里的a表示的是每一组第一个学生 ,b表示的就是后面的学生 while(scanf("%d%d",&n,&m)&&n)//&&n表示当n和m同时为0就退出,但是不用写&&m,至于为什么,请读者自行领会 {chushihua();for(int i=0;i<m;i++){scanf("%d",&k);scanf("%d",&a);for(int i=1;i<k;i++){scanf("%d",&b);hebing(a,b);//将这些学生合并到一个集合里面。 }}printf("%d\n",rak[find(0)]);//输出和0学生一个集合总共的人数rak }return 0;
}

小结一下:这个题是我学习并查集做的第二个题,比较基础适合并查集入门,感觉特别能体现出并查集的能力,如果没看懂题的话可能还是有点难度,不过也是巧,这道题讲的是有关病毒传染的,而作者所处的时间正好也是病毒四处传播,危害人民的时间,话不多说,武汉加油!

The Suspects(并查集入门)相关推荐

  1. 并查集入门+初级专题训练

    介绍   摘自罗勇军,郭卫斌的<算法竞赛入门到进阶>上的说明:   并查集(Disjoint Set)是一种非常精巧而且食用的数据结构,它主要用于处理一些不相交集合的合并问题.经典的例子有 ...

  2. POJ 1611 The Suspects 并查集

    The Suspects Time Limit:1000MS     Memory Limit:20000KB     64bit IO Format:%lld & %llu Descript ...

  3. poj 1611 The Suspects // hoj 1564 The Suspects 并查集

    /* 题目: 是说学生0怀疑有SARS病,跟他接触过的俱乐部的所有人以及他接触过的人再与别人接触, 都有可能有SARS病,要你求出给出的所有俱乐部人的名单,要你求出所有的嫌疑犯... 分析: 用并查集 ...

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

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

  5. 感冒病毒 suspects 并查集

    题目大意:给定n个人,m个团,同一个团中只要有一个人感染病毒整个团就都感染病毒.现在0号感染了病毒,问总共有多少个人会感染病毒. 题目分析:简单的并查集. #include<cstdio> ...

  6. HDOJ 畅通工程 1232(并查集入门)

    畅通工程 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. The Suspects//并查集

    题目: The Suspects Time Limit: 1000MS   Memory Limit: 20000K Total Submissions: 48312   Accepted: 2311 ...

  8. pku 1611 The Suspects 并查集的应用

    http://poj.org/problem?id=1611 思路:统计出和0能够联系在一起的点,然后输出其个数 View Code #include <cstdio>#include & ...

  9. [kuangbin带你飞]专题五 并查集 题解+总结

    kuangbin带你飞:点击进入新世界 总结: 本人算是初学者中的初学者,欢迎交流~ 并查集的接触过的不多,大概只有普通并查集,带权并查集,种族并查集,传说中的可持续化并查集只是听说过还没有接触,不过 ...

最新文章

  1. java 往文件写值,java文件读写
  2. android tv 悬浮窗口,android TV的自定义关机弹出框
  3. BlockChain:Py实现区块链简单场景应用:程序猿记录在区块里的收入记录图
  4. SpringBoot自定义MessageConverter
  5. 指标搭建篇:如何快速定位数据异常?——ROI异常实战案例
  6. (转)OpenLayers3基础教程——OL3基本概念
  7. 自己闲着没事整理的人工智能思维导图(2(鸢尾花))
  8. Python脚本实现单据体背景色及字段前景色设置
  9. FTP测试手机软件画画教程图片,「推荐」手机、平板绘画党福利!10个非常好用的绘画App赶紧试试...
  10. axure rp 9授权码
  11. 写bat文件,报系统找不到指定文件的处理方式
  12. 一直听说“不忘初心”,今天才知道真正内涵!
  13. 生成时间序列每月月初月末
  14. 推荐一款适用于vue的h5富文本编辑器
  15. [论文解读]Explaining Knowledge Distillation by Quantifying the Knowledge
  16. python 爬取微博实时热搜,并存入数据库实例
  17. 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral
  18. wang editor Vue使用 + 使用自己方法上传图片
  19. 《关于粗糙集和邻域粗糙集的基本理论和程序算例(第二版本)》的声明
  20. 网络经济与企业管理【七】之企业财务管理

热门文章

  1. Loaded runtime CuDNN library: 7103 (compatibility version 7100) but source was compiled with 7005 ..
  2. Redis实战(十二)Redis实现分布式锁
  3. Codeforces 241B Friends 字典树
  4. 搭建ntp时间服务器 ntp - (Network Time Protocol)
  5. [C/C++]_[0基础]_[static_cast,reinterpret_cast,dynimic_cast的使用场景和差别]
  6. React Native 首次加载白屏优化
  7. 2015/12/12 考了PAT,又回来玩Python了。
  8. PHP字符串替换函数strtr()的功能实现讲解
  9. Leetcode 5
  10. Android组件化demo实现以及遇坑分享