poj1611---The Suspects
The Suspects
Time Limit: 1000MS |
Memory Limit: 20000K |
|
---|---|---|
Total Submissions: 19754 |
Accepted: 9576 |
Description
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
Source
并查集
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #define maxn 30000
4 int n,m;
5 int father[maxn],rank[maxn];
6 void init()
7 {
8 for(int i=0;i<n;i++)
9 {
10 father[i]=i;
11 rank[i]=1;
12 }
13 }
14 int setfind(int x)
15 {
16 if(x!=father[x])
17 x=setfind(father[x]);
18 return x;
19
20 }
21 void _union(int a,int b)
22 {
23 a=setfind(a);
24 b=setfind(b);
25 if(a!=b)
26 {
27 if(rank[a]<rank[b])
28 {
29 father[a]=b;
30 rank[b]+=rank[a];
31 }
32 else
33 {
34 father[b]=a;
35 rank[a]+=rank[b];
36 }
37 }
38 }
39 int main()
40 {
41 int a,b,c;
42 while(scanf("%d%d",&n,&m),m+n)
43 {
44 init();
45 while(m--)
46 {
47 scanf("%d %d",&a,&b);
48 while(a>1)
49 {
50 scanf("%d",&c);
51 _union(b,c);
52 b=c;
53 a--;
54 }
55 }
56 printf("%dn",rank[setfind(0)]);
57 }
58
59 return 0;
60 }
- Hive高级优化
- OpenStack中的RESTful API是如何实现的?
- servlet乱码问题总结
- Servlet学习之web服务器Tomcat 详解
- 结合源码彻底讲解Aggregate vs treeAggregate
- Nginx+uWSGI部署Django网站的详细步骤,脱坑必备,值得收藏!
- 友元类
- 大数据最佳实践 | HBase客户端
- 模板类的友元
- Qt学习笔记 TableWidget使用说明和增删改操作的实现
- 计算机程序的思维逻辑 (9) - 强大的循环
- Qt学习笔记 QMessageBox
- Java finally return知识小菜
- Qt 学习笔记 TreeWidget 增删改
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ribbon源码
- feign源码
- DAO层配置绑定weblogic应用服务器的JNDI导致单元测试失败
- 1.操作系统底层工作的基本原理
- ibatis 日常问题总结
- 2.1 并发编程之java内存模型JMM & synchronize & volatile详解
- 使用intellij idea 查看Java字节码
- 2.2 指令重排&happens-before 原则 & 内存屏障
- 设计模式之代理模式(由浅入深)
- jquery param 数据 数组参数序列化
- 3 CPU缓存一致性协议MESi
- 4. synchronized详解
- 4.2 synchronized补充
- 解决 Maven 使用Tomcat 部署报错 Tomcat return http status error: 405, Reason Phrase: Method Not Allowed:
- spring5源码 -- IOC容器设计理念和核心注解的作用