HDU 5326 Work 并查集 (2015 Multi-University Training Contest 3 2015多校联合)
来源:互联网 发布:数据分析 java 编辑:程序博客网 时间:2024/05/17 00:15
-_- 好吧我不得不承认这道题是签到题。
这道题方法很多,可以用dfs等等,我是用并查集做的。思路很简单,就是求管理k个人的人数有多少。
就是先用一个数组pre来表示该节点的父节点,初始化都为自己,输入的时候直接录入,然后查找,直到找到父节点是自己的结点为止,这样就可以求出每个结点下边的子孙结点有多少个,直接和题目给的数字比较一下然后累加就可以了。
看着代码自己感悟吧。~
Work
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 784 Accepted Submission(s): 504
Problem Description
It’s an interesting experience to move from ICPC to work, end my college life and start a brand new journey in company.
As is known to all, every stuff in a company has a title, everyone except the boss has a direct leader, and all the relationship forms a tree. If A’s title is higher than B(A is the direct or indirect leader of B), we call it A manages B.
Now, give you the relation of a company, can you calculate how many people manage k people.
Input
There are multiple test cases.
Each test case begins with two integers n and k, n indicates the number of stuff of the company.
Each of the following n-1 lines has two integers A and B, means A is the direct leader of B.
1 <= n <= 100 , 0 <= k < n
1 <= A, B <= n
Each test case begins with two integers n and k, n indicates the number of stuff of the company.
Each of the following n-1 lines has two integers A and B, means A is the direct leader of B.
1 <= n <= 100 , 0 <= k < n
1 <= A, B <= n
Output
For each test case, output the answer as described above.
Sample Input
7 21 21 32 42 53 63 7
Sample Output
2
Author
ZSTU
Source
2015 Multi-University Training Contest 3
题目链接:HDU5326 Work
#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <string>using namespace std;int pre[105];int t[105];void find(int x){ if(x!=pre[x]) { t[pre[x]]++; find(pre[x]); } else return ;}int main(){ int n,k,x,y,ans,i; while(~scanf("%d%d",&n,&k)) { ans=0; for(i=0;i<=n;i++) pre[i]=i; memset(t,0,sizeof(t)); for(i=1;i<=n-1;i++) { scanf("%d%d",&x,&y); pre[y]=x; } for(i=1;i<=n;i++) { if(pre[i]==i) continue; else find(i); } for(i=1;i<=n;i++) { if(t[i]==k) ans++; } printf("%d\n",ans); } return 0;}
0 0
- HDU 5326 Work 并查集 (2015 Multi-University Training Contest 3 2015多校联合)
- HDU 5326 Work(并查集)(2015 Multi-University Training Contest 3)
- hdu 5326 Work 2015 Multi-University Training Contest 3
- HDU 5319 Painter (2015 Multi-University Training Contest 3 2015多校联合)
- HDU 5327 Olympiad (2015 Multi-University Training Contest 4 2015多校联合)
- HDU 5328 Problem Killer (2015 Multi-University Training Contest 4 2015多校联合)
- HDU 5349 MZL's simple problem (2015 Multi-University Training Contest 5 2015多校联合)
- HDU 5347 MZL's chemistry (2015 Multi-University Training Contest 5 2015多校联合)
- HDU 5363 Key Set(2015 Multi-University Training Contest 6 2015多校联合)
- HDU 5402 Travelling Salesman Problem (2015 Multi-University Training Contest 9 2015多校联合)
- HDU 5400 Arithmetic Sequence(2015 Multi-University Training Contest 9 2015多校联合)
- HDU 5414 CRB and String (2015 Multi-University Training Contest 10 2015多校联合)
- 2015 Multi-University Training Contest 3--1011 Work
- hdu5326_(优美的并查集解法)2015 Multi-University Training Contest 3(1011)
- 2015多校联合训练赛hdu 5301 Buildings 2015 Multi-University Training Contest 2 简单题
- 2015多校联合训练赛 hdu 5305 Friends 2015 Multi-University Training Contest 2 枚举+剪枝
- hdu 5316 Magician(2015 Multi-University Training Contest 3)
- HDU 5316 Magician(2015 Multi-University Training Contest 3 1001)
- Python的Crypto模块使用:自动输入Shell中的密码
- Eclipse常见问题解决 - The method getTextContent() is undefined for the type Node.
- SIP初步
- CentOS 6.3下Samba服务器的安装与配置
- Snail—UI学习之滑块UISlider
- HDU 5326 Work 并查集 (2015 Multi-University Training Contest 3 2015多校联合)
- webView加载html5
- eclipse打断点调试进入到class文件中--解决方法
- LeetCode237_Delete Node in a Linked List(删除链表中的节点) Java题解
- <c:forEach>标签的使用
- 【DiskLruCache完全解析】Android AdapterView图片硬盘缓存的最佳方案
- Spring MVC详解(五) 处理器拦截器详解
- C语言文件操作 fopen, fclose, mkdir(打开关闭文件,建文件夹,判断文件是否存在可读或可写)
- jQuery插件开发精品教程,让你的jQuery提升一个台阶