The Suspects——Asia Kaohsiung 2003
原创
The Suspects
Time Limit: 1000MS Memory Limit: 20000K
Total Submissions: 48698 Accepted: 23286
Description
In the Not-Spreading-Your-Sickness University (NSYSU), there are many student groups. Students in the same group intercommunicate with each other frequently,
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 0
Sample Output
4
1
1
Source
return node==student[node]?node:find_Father(student[node]);
优化后,改变了树的结构,将结点至根节点的链上的所有结点直接指向了根节点,大大方便了下次再次搜寻的效率!
static int find_Father(int node) { //寻找根节点
/*
return node==student[node]?node:find_Father(student[node]);
*/
if(node!=student[node]) {
student[node]=find_Father(student[node]);
//状态压缩,将结点node到根节点这条链上的结点直接指向根节点,优化下次寻找根节点的时间
}
return student[node];
}
Java代码:
import java.util.*;
public class TheSuspects {
static int n; //学生数量
static int m; //组的数量
static int student[];
static int book[];
static int find_Father(int node) { //寻找根节点
/*
return node==student[node]?node:find_Father(student[node]);
*/
if(node!=student[node]) {
student[node]=find_Father(student[node]);
//状态压缩,将结点node到根节点这条链上的结点直接指向根节点,优化下次寻找根节点的时间
}
return student[node];
}
public static void main(String[] args) {
Scanner reader=new Scanner(System.in);
ArrayList list=new ArrayList();
int count=0;
while(reader.hasNext()) {
n=reader.nextInt();
m=reader.nextInt();
if(n==0 && m==0) {
break;
}
student=new int[n];
book=new int[n];
for(int i=0;i<n;i++) {
student[i]=i; //学生指向自己
book[i]=1; //每个学生为1个结点
}
for(int i=1;i<=m;i++) {
int k=reader.nextInt();
int node_One=reader.nextInt(); //输入k个结点中的第一个
for(int j=1;j<=k-1;j++) {
int node_Two=reader.nextInt();
int father_One=find_Father(node_One); //找出父节点
int father_Two=find_Father(node_Two);
if(father_One!=father_Two) {
student[father_Two]=father_One; //合并
book[father_One]+=book[father_Two]; //book[根节点]存储其所在树的结点数,每有一个学生加入此数,总结点数+1
}
}
}
list.add(book[find_Father(0)]); //求0所在树的结点个数
count++;
}
for(int i=0;i<count;i++) {
System.out.println(list.get(i));
}
}
}
POJ截图:

23:31:36
2018-07-18
The Suspects——Asia Kaohsiung 2003的更多相关文章
- [并查集] POJ 1611 The Suspects
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 35206 Accepted: 17097 De ...
- poj 1611:The Suspects(并查集,经典题)
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 21472 Accepted: 10393 De ...
- poj 1611 The Suspects(并查集)
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 21598 Accepted: 10461 De ...
- 【原创】poj ----- 1611 The Suspects 解题报告
题目地址: http://poj.org/problem?id=1611 题目内容: The Suspects Time Limit: 1000MS Memory Limit: 20000K To ...
- The Suspects(并查集维护根节点信息)
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 37090 Accepted: 17980 De ...
- 并查集模板题(The Suspects )HZNU寒假集训
The Suspects Time Limit: 1000MS Memory Limit: 20000KTotal Submissions: 36817 Accepted: 17860 Descrip ...
- [ACM] POJ 1611 The Suspects (并查集,输出第i个人所在集合的总人数)
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 21586 Accepted: 10456 De ...
- poj1611---The Suspects
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 19754 Accepted: 9576 Des ...
- POJ----The Suspects
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 18890 Accepted: 9150 Des ...
随机推荐
- HTTP/HTTPS原理详解
简介 HTTP(Hypertext Transfer Protocal,超文本传输协议)是WWW(World Wide Web,万维网)数据传输的基础,规定如何传输超文本.HTTP协议存在多个版本:H ...
- composer的安装和使用 学习日志
如果你做为一个phper,没有用过composer,那你真的不是一个合格的开发者.那么就来记录一下composer的学习日志 下面分享几个学习源头: composer中文网站:https://www. ...
- strtotime出现时区问题不一致的解决方法
学习源头:https://blog.csdn.net/longjuanfengzc/article/details/80622842 https://segmentfault.com/q/101000 ...
- 蓝桥杯 算法训练 ALGO-60 矩阵乘法
算法训练 矩阵乘方 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个矩阵A,一个非负整数b和一个正整数m,求A的b次方除m的余数. 其中一个nxn的矩阵除m的余数得到的仍是一个 ...
- 杂项-公司:联邦快递百科-un
ylbtech-杂项-公司:联邦快递百科 联邦快递( FedEx)是一家国际性速递集团,提供隔夜快递.地面快递.重型货物运送.文件复印及物流服务,总部设于美国田纳西州,隶属于美国联邦快递集团(FedE ...
- Mongodb时间问题
Java保存到mongodb当前时间,使用RoboMongo查看数据显示时间比当前时间少8个小时,这是客户端的问题. MongoDB中的Date类型数据只保存绝对时间值,不保存时区信息,因此“显示的时 ...
- 1138 Postorder Traversal
题意:给出二叉树的前序序列后中序序列,输出其后序序列的第一个值. 思路:乍一看不就是前序+中序重建二叉树,然后后序遍历嘛!这么做当然不会有错,但是却没有真正领会本题的意图.本题并不是让我们输出后序序列 ...
- keepalived 预防脑裂检测脚本
1 检查vip [root@mysql2 keepalived]# cat /etc/keepalived/check_brain_keepalived.sh #!/bin/bash # 检查脑裂的脚 ...
- VC++使用TCHAR
#ifdef _UNICODE #define tcout wcout #define tcin wcin #else #define tcout cout #define tcin cin #end ...
- Py修行路 python基础 (八)函数(随时更改)
为何要用函数: 1.解决代码重用的问题 2.提高代码的可维护性,统一维护 3.程序的组织结构清晰,可读性强 定义函数 先定义后使用!!! def funcname(arg1,arg2,.....) ...