hdu 5326 Work(杭电多校赛第三场)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5326

Work

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 583    Accepted Submission(s):
392

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

Output

For each test case, output the answer as described
above.

Sample Input

7 2

1 2

1 3

2 4

2 5

3 6

3 7

Sample Output

2

Source

2015
Multi-University Training Contest 3

题目大意:输入的第一行:第一个数字n表示的是有几个人,第二个数字m表示查找管理两个人的。

       接下去就有n-1行表示前面的管理后面的,最后求的就是有几个人是管理m个人的。

详见代码。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4
 5 using namespace std;
 6
 7 int n,m,Map[110][110];
 8
 9 int dfs(int x)
10 {
11     int sum=0;
12     for (int i=1;i<=n;i++)
13     {
14         if (Map[x][i]==1)
15         {
16             sum++;
17             sum+=dfs(i);
18         }
19     }
20     return sum;
21 }
22
23 int main()
24 {
25     int a,b,ans;
26     while (~scanf("%d%d",&n,&m))
27     {
28         ans=0;
29         memset(Map,0,sizeof(Map));
30         //memset(ok,0,sizeof(ok));
31         for (int i=1; i<=n-1; i++)
32         {
33             scanf("%d%d",&a,&b);
34             Map[a][b]=1;
35         }
36         for (int i=1;i<=n;i++)
37         {
38             if (dfs(i)==m)
39                 ans++;
40         }
41         printf ("%d\n",ans);
42     }
43     return 0;
44 }
时间: 2024-10-10 12:20:15

hdu 5326 Work(杭电多校赛第三场)的相关文章

hdu 5328 Problem Killer(杭电多校赛第四场)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5328 题目大意:找到连续的最长的等差数列or等比数列. 解题思路:1.等差等比的性质有很多.其中比较重要的一个就是解题关键:如a[i-2],a[i-1],a[i],a[i+1]这个序列.a[i-2],a[i-1],a[i]是等差数列,a[i-1],a[i],a[i+1]也是等差数列.那么a[i-2],a[i-1],a[i],a[i+1]就是等差数列.  2. 等比数列也是一样的~~只要根据这个性质就

HDU 5762 Teacher Bo (鸽笼原理) 2016杭电多校联合第三场

题目:传送门. 题意:平面上有n个点,问是否存在四个点 (A,B,C,D)(A<B,C<D,A≠CorB≠D)使得AB的横纵坐标差的绝对值的和等于CD的横纵坐标差的绝对值的和,n<10^5,点的坐标值m<10^5. 题解:表面上这道题复杂度是O(n^2)会超时的,而实际上这些坐标差绝对值的和最大是2*10^5,所以复杂度不是O(n^2),而是O(min(n^2,m)),这就是著名的鸽笼原理. #include <iostream> #include <cstdio

HDU 5752 Sqrt Bo (思维题) 2016杭电多校联合第三场

题目:传送门. 题意:一个很大的数n,最多开5次根号,问开几次根号可以得到1,如果5次还不能得到1就输出TAT. 题解:打表题,x1=1,x2=(x1+1)*(x1+1)-1,以此类推.x5是不超过long long的,判断输出即可. #include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; typedef long long

HDU 4940(杭电多校#7 1006) Destroy Transportation system(瞎搞)

题目地址:HDU 4940 当时这个题一看就看出来了是网络流的最小割,然后就一直在想建图..然后突然发现,应该要让T集合的数目最少,不然只要有两个,那这两个的每一个都可以跑到S集合,使得T集合变小.那就只能是1个了.然后..枚举就好了..但是虽然觉得这么做肯定没错..但是不敢敲..因为当时都3个小时了才只有10个队过了...后来又想了几遍后觉得这样没错,就写完交上了.果然AC... 代码如下: #include <iostream> #include <cstdio> #inclu

HDU 4923 (杭电多校 #6 1003题)Room and Moor(公式+栈)

题目地址:HDU 4923 比赛的时候脑残了..思路完全想出来了..只不过想出了个根本不可能存在的极端数据,然后一看输入数据是100组,就把自己给否决了...sad..当时就应该大胆试一试的... 这个题首先可以把最前面的0和最后面的1去掉,因为这两块总可以用0和1抵消掉.然后中间就分成了10相间的情况,然后根据10相间,可以分成若干组,每一组都是由几个1和几个0组成的.比如说1101101110,就可以分成110,110,1110这样的三组. 然后这时候可以可以对每一组内只取一个数来使得这组的

HDU 4920(杭电多校训练#5 1010 题) Matrix multiplication(不知道该挂个什么帽子。。。)

题目地址:HDU 4920 对这个题简直无语到极点...居然O(n^3)的复杂度能过....方法有三.. 1:进行输入优化和输出优化..(前提是你的输入优化不能太搓...) 2:利用缓存优化..详情请看该论文.大体就是将后两个for循环换过来,让坐标改变的频率降下来. 3:叉姐题解中说的正规方法..利用biset存储,进行预处理..(其实我还没看懂.. 我只写了个第二种...代码如下,共勉..神奇的小代码.. #include <iostream> #include <cstdio>

【多校赛第三场】Redraw Beautiful Drawings【网络流】【谜のWA】

参考题解:http://blog.csdn.net/qian99/article/details/38276887 #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <queue> #include <vector> #include <algorithm>

杭电多校赛三 Find the answer 离散化

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6609 题意:给你一个长为n(2e5+7)的数字序列和一个数字m(1e9),对从1开始的每段区间分析(1-1,1-2...1-n),要求区间和小于m,你可以将每段区间除右端点的数置为0,每段区间输出已经将多少数置为0了 分析:对于第i个位置,怎样选择数字才会使满足条件情况下选择数字数目最少呢?很容易想到,需要选择前i1个数中较大的数字,使其变为0 基于这个思想,如果我们对于每个位置i都暴力去找最大的前

HDU 5793 A Boring Question (费马小定理) ---2016杭电多校联合第六场

A Boring Question Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 156    Accepted Submission(s): 72 Problem Description There are an equation.∑0≤k1,k2,?km≤n∏1?j<m(kj+1kj)%1000000007=?We define t