Work

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

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

AC代码：

1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 #include <string>
5 #include <cmath>
6 #include <algorithm>
7 #include <vector>
8 #include <queue>
9 #include <set>
10 #include <map>
11 #include <stack>
12 #include <limits.h>
13 using namespace std;
14 typedef long long LL;
15 #define y1 y234
16 #define MAXN 1000010 // 1e6
17 vector <int> edge[MAXN];
18 int n, k;
19 int sum[MAXN];
20 void DFS(int u) {
21     int res = 0;
22     int len = edge[u].size();
23     for(int i = 0; i < len; i++) {
24         int v = edge[u][i];
25         if(!sum[v]) {
26             DFS(v);
27         }
28         res++;
29         res += sum[v];
30     }
31     sum[u] = res;
32 }
33 int main() {
34     while(~scanf("%d%d", &n, &k)) {
35         int ans = 0;
36         memset(sum, 0, sizeof(sum));
37         for(int i = 0; i <= n; i++) edge[i].clear();
38         for(int i = 0; i < n - 1; i++) {
39             int a, b;
40             scanf("%d%d",&a, &b);
41             edge[a].push_back(b);
42         }
43         for(int i = 1; i <= n; i++) {
44             if(sum[i]) continue;
45             DFS(i);
46         }
47         for(int i = 1; i <= n; i++) {
48             if(sum[i] == k) ans++;
49         }
50         printf("%d\n", ans);
51     }
52     return 0;

53 }

HDU 2092 整数解 --- 水题

x+y = n, x*y = m; y = n - x; x * ( n - x) = m nx - x^2 = m; x^2 - nx + m = 0; △ = sqrt(n^2 - 4m) 要有整数解即△需要为可开方数即可. /* HDU 2092 整数解 --- 水题 */ #include <cstdio> #include <cmath> int main() { double n, m; while (scanf("%lf%lf", &n,

hdu 5210 delete 水题

Delete Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5210 Description wld有n个数(a1,a2,...,an),他希望进行k次删除一个数的操作,使得最后剩下的n−k个数中有最多的不同的数,保证1≤n≤100,0≤k<n,1≤ai≤n(对于任意1≤i≤n) Input 多组数据(最多100组)对于每组数据:第一行:一个数n表示数的个数接下来一行:

hdu 4802 GPA 水题

GPA Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4802 Description In college, a student may take several courses. for each course i, he earns a certain credit (ci), and a mark ranging from A to F, which is c

hdu 5495 LCS 水题

LCS Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5495 Description 你有两个序列\{a_1,a_2,...,a_n\}{a?1??,a?2??,...,a?n??}和\{b_1,b_2,...,b_n\}{b?1??,b?2??,...,b?n??}. 他们都是11到nn的一个排列. 你需要找到另一个排列\{p_1,p_2,...,p_n\}{p?1?

hdu 4493 Tutor 水题

Tutor Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4493 Description Lilin was a student of Tonghua Normal University. She is studying at University of Chicago now. Besides studying, she worked as a tutor tea