C - The Suspects POJ - 1611(并查集)
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
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相连的节点的个数
题解:通过并查集将所有的结点连接在一起,在连接两个不同的组时,将边数少的连接到变数少的连接的变数多的的上面
1 #include<iostream>
2
3 using namespace std;
4
5 int pre[30005];
6 int Rank[30005];
7
8 int Find(int x) {
9 return pre[x] = pre[x] == x ? x : Find(pre[x]);
10 }
11
12 void Union(int x, int y) {
13 int t1, t2;
14 t1 = Find(x);
15 t2 = Find(y);
16 if (t1 == t2)
17 return ;
18 if (Rank[t1] > Rank[t2]) {
19 pre[t2] = t1;
20 }
21 else {
22 pre[t1] = t2;
23 if (Rank[t1] == Rank[t2]) {
24 pre[t1] = t2;
25 Rank[t2]++;
26 }
27 }
28 }
29
30 int main() {
31 int n, m;
32 while(cin >> n >> m) {
33
34 if (n == 0 && m == 0)
35 break;
36 // 初始化父亲节点
37 for (int i = 0; i <= n; i++) {
38 pre[i] = i;
39 Rank[i] = 0;
40 }
41
42 for (int i = 1; i <= m; i ++) {
43 int t, k, h, r, flag;
44 cin >> t;
45 if (t > 0)
46 cin >> r;
47
48 for (int j = 1; j < t; j++) {
49 cin >> k;
50 Union(r, k);
51 }
52
53 }
54 int ans = 1, cmp = Find(0);
55
56 for (int i = 1; i < n; i++) {
57 if (cmp == Find(i))
58 ans++;
59 }
60 cout << ans << endl;
61 }
62
63 return 0;
64 }
C - The Suspects POJ - 1611(并查集)的更多相关文章
- The Suspects(POJ 1611 并查集)
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 30158 Accepted: 14665 De ...
- poj 1611(并查集)
http://poj.org/problem?id=1611 题意:有个学生感染病毒了,只要是和这个学生接触过的人都会感染,而和这些被感染者接触的人,也会被感染,现在给定你一些协会的人数,以及所在学生 ...
- POJ 1611(并查集+知识)
并查集主要是两个过程,一个是并,一个是查 原理是用一个数组p[i]保存每个i的根节点,如果根节点一样则在同一个集合里,所以只有根节点p[i]=i; 查: int find(int x){return ...
- POJ 1611并查集
我发现以后写题要更细心,专心! #include<iostream>#include<algorithm>#include<stdio.h>#include< ...
- poj 1984 并查集
题目意思是一个图中,只有上下左右四个方向的边.给出这样的一些边, 求任意指定的2个节点之间的距离. 就是看不懂,怎么破 /* POJ 1984 并查集 */ #include <stdio.h& ...
- poj 1611 :The Suspects经典的并查集题目
Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized ...
- 【POJ】The Suspects(裸并查集)
并查集的模板题,为了避免麻烦,合并的时候根节点大的合并到小的结点. #include<cstdio> #include<algorithm> using namespace s ...
- poj 1797(并查集)
http://poj.org/problem?id=1797 题意:就是从第一个城市运货到第n个城市,最多可以一次运多少货. 输入的意思分别为从哪个城市到哪个城市,以及这条路最多可以运多少货物. 思路 ...
- POJ 2492 并查集扩展(判断同性恋问题)
G - A Bug's Life Time Limit:10000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u S ...
随机推荐
- Python 学习笔记(2)
python 引号 Python 可以使用引号( ' ).双引号( " ).三引号( ''' 或 """ ) 来表示字符串,引号的开始与结束必须是相同类型的. ...
- Wireguard 全互联模式(full mesh)配置指南
上篇文章给大家介绍了如何使用 wg-gen-web 来方便快捷地管理 WireGuard 的配置和秘钥,文末埋了两个坑:一个是 WireGuard 的全互联模式(full mesh),另一个是使用 W ...
- Nginx配置翻译
Windows 格式 server { listen 82; server_name localhost; root "D:/testfile/"; location / { in ...
- 《C++ Primer》笔记 第11章 关联容器
关联容器类型 解释 按关键字有序保存元素 -- map 关联数组:保存关键字-值对 set 关键字即值,即只保存关键字的容器 multimap 关键字可重复出现的map multiset 关键字可重复 ...
- apicloud编译所需的ios证书的获取方法
在我们通过apicloud或hbuilderX这些工具打包ios应用的时候,需要一个ios证书. 那么我们如何生成这个ios证书呢?网上介绍的方法都是需要使用mac电脑,然后用mac电脑的钥匙串访问的 ...
- Linux速通02 命令格式
命令的格式 # 格式:命令 [选项][参数] * 命令:告诉 Linux操作系统执行什么 * 选项:说明命令运行的方式(可以改变命令的功能).以 "-"字符开始 * 参数:说明命令 ...
- 2020年12月-第01阶段-前端基础-表格 table
表格 table(会使用) 为了让我们页面显示的更加整齐,我们需要学习三个表(表格.表单.列表) 理解: 能说出表格用来做什么的 表格的基本结构组成 表格作用: 存在即是合理的. 表格的现在还是较为常 ...
- 【Arduino学习笔记01】关于Arduino引脚的一些笔记
参考链接:https://www.yiboard.com/thread-831-1-1.html Arduino Uno R3 - 引脚图 Arduino Uno R3 - 详细参数 Arduino ...
- spring-cloud-alibaba之Nacos
在微服务构架中,集群服务间的需要调用时就需要知道各个服务的IP和提供服务的端口等信息,如果每个部署一个服务就配置一次,那么必然时非常麻烦的,因此我们需要一个能够统一管理的东西来解决这个问题,由此诞生了 ...
- Codeforces Round #574 (Div. 2) D1. Submarine in the Rybinsk Sea (easy edition) 【计算贡献】
一.题目 D1. Submarine in the Rybinsk Sea (easy edition) 二.分析 简单版本的话,因为给定的a的长度都是定的,那么我们就无需去考虑其他的,只用计算ai的 ...