【HDU - 5326】 Work


點擊打開鏈接


Work

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


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
 
//代碼如下:

#include <cstdio>
#include <cstring>
const int maxn = 1e6 + 10;
int par[maxn];
int root[maxn];
int getroot(int n,int k)
{
	for (int i = 1 ; i <= n ; i++)
	 {
	 	int t = i;
	 	while (root[t])
	 	  {
	 	  	 par[ root[t] ]++;
	 	  	 t = root[t];
		  }
	 }
	 int ans = 0;
	 for (int i = 1 ; i <= n ; i++)
	  {
	  	if (par[i] == k)
	  	  ans++;
	  }
return ans;
}
int main()
{
	int n,k;
	while (~scanf("%d%d",&n,&k))
	{
		int a,b;
		memset(par,false,sizeof(par));
		memset(root,false,sizeof(root));
		for (int i = 0 ; i < n - 1 ; i++)
		  {
			scanf ("%d%d",&a,&b);
			root[b] = a;
		  }
		int ans = 0;
		
	printf ("%d\n",getroot(n,k));
	}
return 0;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章