The Suspects
Time Limit: 1000MS   Memory Limit: 20000K
Total Submissions: 34284   Accepted: 16642

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 题目大意:找0所在集合的成员个数
题目链接:http://poj.org/problem?id=1611 代码:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int f[30008];
int num[30008];
int find(int n)
{
if(n!=f[n])
f[n]=find(f[n]);
return f[n];
}
int main()
{ int n,m;
while(cin>>n>>m)
{ if(n==0&&m==0)
break;
for(int i=0;i<n;i++)
{f[i]=i;num[i]=1;}
int a,b,c;
for(int i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
for(int j=1;j<a;j++)
{
scanf("%d",&c);
int b1=find(b),c1=find(c);
if(b1!=c1)
{
f[c1]=b1;
num[b1]+=num[c1];
}
}
}
cout<<num[find(0)]<<endl;
} return 0;
}
 

最新文章

  1. jquery实现简单瀑布流布局
  2. 《玩转D语言系列》二、D语言现状、基本规定和相关资源介绍
  3. Ubuntu W: GPG error: http://archive.ubuntukey....NO_PUBKEY 8D5A09
  4. 《ODAY安全:软件漏洞分析技术》学习心得-----shellcode的一点小小的思考
  5. Restful是什么,SOAP Webservice和RESTful Webservice
  6. linux 常见操作命令
  7. 25套用于Web UI设计的免费PSD网页元素模板
  8. Elasticsearch template(待续...)
  9. 九度OJ 1447 最短路 1008 最短路径问题
  10. C# 应用正则表达式
  11. centos 6.5关闭NetworkManager
  12. checkbox、select、radio的设置与获取
  13. Stack集合、queue集合、hashtable集合
  14. 查询系统--基于Solr4.9.0实现
  15. DirectFB的架构介绍
  16. 团队作业8——第二次项目冲刺(Beta阶段)--5.24 forth day
  17. 实际应用中遇到TimedRotatingFileHandler不滚动的问题
  18. 从零开始学 Web 之 JavaScript(一)JavaScript概述
  19. Windows视频桌面壁纸实现(libvlc)(类似于wall paper engine效果)
  20. 《算法》第四章部分程序 part 16

热门文章

  1. [Spring框架]Spring开发实例: XML+注解.
  2. 大型.NET商业软件代码保护技术 技术与实践相结合保护辛苦创造的劳动成果
  3. 手动为php安装memcached扩展模块
  4. (转)rlwrap真是一个好东西
  5. 构建自己的PHP框架--抽象Controller的基类
  6. 使用Html5+C#+微信 开发移动端游戏详细教程: (四)游戏中层的概念与设计
  7. 机器学习&amp;数据挖掘笔记_19(PGM练习三:马尔科夫网络在OCR上的简单应用)
  8. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility
  9. Css定位总结
  10. The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value. 错误的原因及解决方案