POJ 1611 The Suspects [简单并查集应用]

来源:互联网 发布:csgo顿卡优化教程 编辑:程序博客网 时间:2024/05/22 14:08

中文版的题目很人性化 有木有
B - The Suspects
Time Limit:1000MS Memory Limit:20000KB 64bit IO Format:%I64d & %I64u
Submit

Status
Description
严重急性呼吸系统综合症( SARS), 一种原因不明的非典型性肺炎,从2003年3月中旬开始被认为是全球威胁。为了减少传播给别人的机会, 最好的策略是隔离可能的患者。
在Not-Spreading-Your-Sickness大学( NSYSU), 有许多学生团体。同一组的学生经常彼此相通,一个学生可以同时加入几个小组。为了防止非典的传播,NSYSU收集了所有学生团体的成员名单。他们的标准操作程序(SOP)如下:
一旦一组中有一个可能的患者, 组内的所有成员就都是可能的患者。
然而,他们发现当一个学生被确认为可能的患者后不容易识别所有可能的患者。你的工作是编写一个程序, 发现所有可能的患者。

Input
输入文件包含多组数据。
对于每组测试数据:
第一行为两个整数n和m, 其中n是学生的数量, m是团体的数量。0 < n <= 30000,0 <= m <= 500。
每个学生编号是一个0到n-1之间的整数,一开始只有0号学生被视为可能的患者。
紧随其后的是团体的成员列表,每组一行。
每一行有一个整数k,代表成员数量。之后,有k个整数代表这个群体的学生。一行中的所有整数由至少一个空格隔开。
n = m = 0表示输入结束,不需要处理。
Output
对于每组测试数据, 输出一行可能的患者。
Sample Input
100 4
2 1 2
5 10 13 11 12 14
2 0 1
2 99 2
200 2
1 5
5 1 2 3 4 5
1 0
0 0
Sample Output
4
1
1


本题思路:就是并查集的基本使用 把与病人接触的和间接接触的放在一堆即可 然后遍历一下 记录一下有多少就行

一定要注意:本题后台数据量较大 一定要使用路径压缩 否则在遍历的时候 时间复杂度远大于O(n) 造成TLE

附一道简单的类似题

有人嫌上述的并查集代码比较麻烦所以用递归的并查集代码,但是并不能对路径进行压缩,对于那些不许路径压缩的题目很好 但是对于本类必须进行路径压缩的就不行了
当然递归的代码可能有路径压缩,但是我不会>_<

#include<stdio.h>  #include<string.h>  using namespace std;  int f[3000000];  int a[3000000];  int j[3000000];  int find(int a)  {      int r=a;      while(f[r]!=r)      r=f[r];      int i=a;      int j;      while(i!=r)    {          j=f[i];          f[i]=r;          i=j;      }      return r;  }  void merge(int a,int b)  {      int A,B;      A=find(a);      B=find(b);      if(A!=B)      {           f[B]=A;           j[A]+=j[B];      }  }  int main()  {      int n,m;      while(~scanf("%d%d",&n,&m))      {          if(n==0&&m==0)break;          for(int i=0;i<n;i++)          {              f[i]=i;              j[i]=1;          }          for(int i=0;i<m;i++)          {              int k;              scanf("%d",&k);              for(int j=0;j<k;j++)              {                  scanf("%d",&a[j]);                  for(int l=0;l<j;l++)                  {                      merge(a[j],a[l]);                  }              }          }          printf("%d\n",j[find(0)]);      }      return 0;}  
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 联想笔记本装win7蓝屏怎么办 联想g40-70开机黑屏怎么办 新主机开不了机怎么办 联想720s笔记本闪屏怎么办 华硕k40ie显卡坏了怎么办 开机黑屏进入bois后怎么办 2根内存条不兼容怎么办 联想笔记本r720系统崩溃怎么办 联想天逸310卡怎么办 新买的鼠标没反应怎么办 联想笔记本触屏鼠标失灵怎么办 无线鼠标接收器丢了怎么办 联想笔记本系统重装失败怎么办 联想笔记本屏幕闪屏怎么办 种植牙螺钉掉了怎么办 水管牙断里面了怎么办 水龙头起泡器不起泡怎么办 14mm乘8mm残留怎么办 宝宝吃了螺丝冒怎么办 收割机滚筒皮带轮键槽滚了怎么办 微信界面变小了怎么办 拉杆箱螺丝掉了怎么办 洗衣机应急门锁没有拉绳怎么办? 奔驰glc发动机声音大怎么办 淋膜机模具螺丝拧不动怎么办 一字螺丝滑丝了怎么办 螺丝拧歪卡住了怎么办 车牌螺丝拧歪了怎么办 空心墙打膨胀螺丝打不上怎么办 沉孔内六角螺丝滑丝怎么办 内六角螺丝滑了怎么办? 三色灯不变光了怎么办 卧室灯不变色了怎么办 圆柱齿轮减速机噪音大怎么办 轴与套间隙生锈怎么办 汽车停小区被刮怎么办 下楼梯摔跤了 屁股疼 怎么办 剧烈咳嗽震的肚子疼怎么办 饺子粘在盘子上怎么办 生饺子粘在盘子怎么办 饺子粘在案板上怎么办