一个公司n个人,n-1中直接上下级关系,问有多少人恰好管着k个人包括(直接管理和间接管理)。
思路:数据范围较小,直接查找即可。
#include<bits/stdc++.h>
using namespace std;
const int N=110;
int n,k;
int fa[N],sum[N];
void Find(int x)
{
while(fa[x]!=x)
{
sum[fa[x]]++;
x=fa[x];
}
}
int main()
{
while(~scanf("%d%d",&n,&k))
{
int i,j,x,y;
memset(sum,0,sizeof(sum));
for(i=1;i<=n;i++)
fa[i]=i;
for(i=1;i<=n-1;i++)
{
scanf("%d%d",&x,&y);
fa[y]=x;
}
for(i=1;i<=n;i++)
{
Find(i);
}
int ans=0;
for(i=1;i<=n;i++)
{
if(sum[i]==k)
ans++;
}
printf("%d\n",ans);
}
return 0;
}