[ACM] POJ 1611 The Suspects (并查集,输出第i个人所在集合的总人数)
Time Limit: 1000MS | Memory Limit: 20000K | |
Total Submissions: 21586 | Accepted: 10456 |
Description
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
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
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
题意:
题意直接从YM那里复制过来的。
http://www.cnblogs.com/yym2013/p/3845448.html
parent[i] 表示 i号节点的根节点是谁。sum[i] 表示以i号节点为根节点的总节点个数,那么sum[0]即为所求。
在合并的时候须要略微处理一下。假设find(x) fin(y)有一个为0时,始终把0作为根节点,也就是说,第0个节点始终在自己的集合中。
这样最后直接输出sum[0]就能够了。
代码:
#include <iostream>
using namespace std;
const int maxn=30010;
int parent[maxn];
int sum[maxn];
int st[maxn]; void init(int n)
{
for(int i=0;i<n;i++)
{
parent[i]=i;
sum[i]=1;
}
} int find(int x)
{
return parent[x]==x? x:find(parent[x]);
} void unite(int x,int y)
{
int t1=find(x);
int t2=find(y);
if(t1==t2)
return ;
if(t1==0)//始终连接到根为0的节点上
{
parent[t2]=t1;
sum[t1]+=sum[t2];
}
else if(t2==0)
{
parent[t1]=t2;
sum[t2]+=sum[t1];
}
else //假设二者的根不为0 ,那就随便了。 {
parent[t1]=t2;
sum[t2]+=sum[t1];
}
} int main()
{
int n,m;
while(cin>>n>>m&&(n||m))
{
init(n);
int k;//每组多少个数
while(m--)
{
cin>>k;
cin>>st[0];//就算0个团体0个人,也要输入第一个人。汗
k--;
for(int i=1;i<=k;i++)
{
cin>>st[i];
unite(st[i],st[i-1]);
}
}
cout<<sum[0]<<endl;
}
return 0;
}
[ACM] POJ 1611 The Suspects (并查集,输出第i个人所在集合的总人数)的更多相关文章
- poj 1611 The Suspects(并查集输出集合个数)
Description Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, wa ...
- poj 1611 The Suspects 并查集变形题目
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 20596 Accepted: 9998 D ...
- POJ 1611 The Suspects (并查集+数组记录子孙个数 )
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 24134 Accepted: 11787 De ...
- POJ 1611 The Suspects (并查集求数量)
Description Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, wa ...
- POJ 1611 The Suspects 并查集 Union Find
本题也是个标准的并查集题解. 操作完并查集之后,就是要找和0节点在同一个集合的元素有多少. 注意这个操作,须要先找到0的父母节点.然后查找有多少个节点的额父母节点和0的父母节点同样. 这个时候须要对每 ...
- poj 1611 The Suspects 并查集
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 30522 Accepted: 14836 De ...
- [ACM] POJ 2524 Ubiquitous Religions (并查集)
Ubiquitous Religions Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 23093 Accepted: ...
- 【POJ 1182 食物链】并查集
此题按照<挑战程序设计竞赛(第2版)>P89的解法,不容易想到,但想清楚了代码还是比较直观的. 并查集模板(包含了记录高度的rank数组和查询时状态压缩) *; int par[MAX_N ...
- POJ 1611 The Suspects (并查集)
The Suspects 题目链接: http://acm.hust.edu.cn/vjudge/contest/123393#problem/B Description 严重急性呼吸系统综合症( S ...
随机推荐
- Tips for Navigating Large Game Code Bases
http://solid-angle.blogspot.com/2015/08/tips-for-navigating-large-game-code.html
- 【Java】通用版URLConnection 带cookie下载PDF等资源文件
/**** * 下载pdf文件 */ public static void downloadNet(String urlStr, String fileName, String savePath) t ...
- 确保安全的HTTPS(对HTTP加密的几种技术,前端面试常问)第一篇
HTTP固然足够好,但是在安全方面有着很大隐患: 1.与服务器进行通信使用的是明文,内容可能会被窃听(HTTP协议本身并不具备加密功能,所以无法对请求和响应的内容进行加密) 2.使用HTTP协议的服务 ...
- Git pull error: Your local changes to the following files would be overwritten by merge:
联合开发,遇上的一个问题,果然,在此验证了百度的不靠谱,是谷歌出的答案...... stackoverflow上有解决方案,链接:http://stackoverflow.com/questions/ ...
- [转]PowerDesigner表结构和字段大小写转换
原文地址:https://blog.csdn.net/u010216641/article/details/48712503 ##PowerDesigner去除双引号## 平时经常用PowerDesi ...
- vagrant中css,img不生效的问题
用vagrant搭建了一个共享开发平台,修改css文件后,页面看不到效果,通过查看源文件地址,发现新修改的Css文件并没有加载进来,加载的还是旧的文件地址.一开始以为是浏览器有缓存,清空了各种浏览器缓 ...
- TP v5中Request取值方式变化
到目前为止的5.0.7版本中,route里相关参数不会再压入$_GET与$_REQUEST变量中,比如 index.php/user/blog/id/123 里我们想用 $_GET['id']是取不到 ...
- require.js+knockout.js+.underscore模板引擎的使用
第一种使用方式: HTML: <ul data-bind="template: { name: 'peopleList' }"></ul> <scri ...
- mvn打包spring工程成jar时报Unable to locate Spring NamespaceHandler for XML schema namespace错误解决办法
有一个小工程,使用了spring,在使用maven的assembly打包成独立可执行的jar包后,在执行时报如下错误:Configuration problem: Unable to locate S ...
- js 窗口抖动
<title>窗口抖动</title> <style> body{margin:50px; } #qq{position:relative;} span{paddi ...