首页 > 其他分享 >POJ 1611--The Suspects【并查集水题】

POJ 1611--The Suspects【并查集水题】

时间:2023-02-07 12:01:55浏览次数:43  
标签:Suspects 并查 fa -- findd suspects int sizee include


The Suspects

Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized as a global threat in mid-March 2003. To minimize transmission to others, the best strategy is to separate the suspects from others. 
In the Not-Spreading-Your-Sickness University (NSYSU), there are many student groups. Students in the same group intercommunicate with each other frequently, and a student may join several groups. To prevent the possible transmissions of SARS, the NSYSU collects the member lists of all student groups, and makes the following rule in their standard operation procedure (SOP).
Once a member in a group is a suspect, all members in the group are suspects. 
However, they find that it is not easy to identify all the suspects when a student is recognized as a suspect. Your job is to write a program which finds all the suspects.
Input
The input file contains several cases. Each test case begins with two integers n and m in a line, where n is the number of students, and m is the number of groups. You may assume that 0 < n <= 30000 and 0 <= m <= 500. Every student is numbered by a unique integer between 0 and n−1, and initially student 0 is recognized as a suspect in all the cases. This line is followed by m member lists of the groups, one line per group. Each line begins with an integer k by itself representing the number of members in the group. Following the number of members, there are k integers representing the students in this group. All the integers in a line are separated by at least one space.
A case with n = 0 and m = 0 indicates the end of the input, and need not be processed.
Output
For each case, output the number of suspects in one line.
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

题意:
      有n个人,m个小组,第一个人即“0”号怀疑为感染者,找到与“0”号连接的有多少人。
分析:

简单并查集

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#define N 200010
#define ll long long
using namespace std;
int fa[N],sizee[N];
int findd(int x)
{
return x==fa[x]?x:fa[x]=findd(fa[x]);
}
void mergee(int x,int y)
{
int t1=findd(x);
int t2=findd(y);

if(t1!=t2)
{
fa[t1]=t2;
sizee[t2]+=sizee[t1];
}
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=-1)
{
if(n==0&&m==0) break;
for(int i=1;i<=n+1;i++)
{
fa[i]=i;
sizee[i]=1;
}
while(m--)
{
int num;
scanf("%d",&num);
//printf(" %d\n",num);
int t;
scanf("%d",&t);
t++;

for(int i=2;i<=num;i++)
{
int tt;

scanf("%d",&tt);
tt++;
mergee(t,tt);
}
}
int t=findd(1);

printf("%d\n",sizee[t]);
}
return 0;
}

 

标签:Suspects,并查,fa,--,findd,suspects,int,sizee,include
From: https://blog.51cto.com/u_14932227/6041860

相关文章

  • RMQ模板整理
    查询区间的最大最小值,属于离线做法,主要运用倍增+DP思想。参考书籍:算法进阶指南一维RMQ查询区间最大值或最小值//求最大值,数组下标从1开始。//求最小值,或者最大最小值下标,......
  • 51nod 1095 Anigram单词
    1095Anigram单词一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram。另:相同的2个单词不算Anigram。现在给定......
  • 灵活又简便,效率提升快,来了解下自定义表单工具!
    选择低代码开发平台,需要看准服务商、产品、服务保障等条件。只有认准专业的开发平台服务商,才能拥有一整套完善的低代码平台解决方案,才能帮助企业最大限度提升办公协作效率,......
  • I2C
    I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址,主从设备之间就通过这个地址来确定与哪个器件进行通信,在通常的应用中,我们把CPU带I......
  • 树的最近公共祖先
    LCA(LowestCommonAncestors),即​​最近公共祖先​​,是指在有根树中,找出某两个结点u和v最近的公共祖先。推荐书籍:算法进阶指南倍增算法(在线)//n结点的树,输出任意两个结点间的......
  • Qt 项目架构之一:全局类说明
    这里讲解一些全局类,一般都放在Util这个文件夹内。Util是工具的意思,一般来说,常常用来描述和业务逻辑没有关系的数据处理。一、全局配置文件全局配置文件管理类AppConf......
  • POJ 3667 Hotel(线段树:区间覆盖+维护最大连续子区间长度)
    HotelDescriptionThecowsarejourneyingnorthtoThunderBayinCanadatogainculturalenrichmentandenjoyavacationonthesunnyshoresofLakeSuperior.Be......
  • HelloWorld之Java调用C++(JNI)
    JNI(JavaNativeInterface),通过使用Java本地接口书写程序,可以确保代码在不同的平台上方便移植。JNI技术博客:https://blog.csdn.net/m0_37537867/article/details/12413......
  • BZOJ-2301-[HAOI2011]Problem b(莫比乌斯反演+容斥)
    [HAOI2011]Problemb描述对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y)=k,gcd(x,y)函数为x和y的最大公约数。Input 第一行一个整数n,接下来n......
  • 关于CompletableFuture异步编程使用allof后不继续执行问题
    最近在做异步编程相关工作,将大批量的数据分批次放入异步线程池执行,当每个异步都执行完成之后将结果合并再更新数据库。实例代码如下:intnThreads=5;intunit=quota......