首页 > 其他 > 详细

Hdu-5326

时间:2020-09-21 22:01:54      阅读:42      评论:0      收藏:0      [点我收藏+]

题意:

现在有一个有n个人的公司,然后每个人除了boss外都有一个直接领导者,然后如果是直接或间接领导的话,那么都可以说是A管理了B。然后问你有多少个人管理着k个人。

 

解题思路:数据范围小,可以用vector存下来临接关系,然后dfs深度搜索每个节点往下有多少个子节点。

 

 

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 5e5 + 100;

int vis[1010];
vector<int> E[1020];
int n,k,res;


int dfs(int idx){
    for(int i = 0;i < E[idx].size();i++){
        int u = E[idx][i];
        if(vis[u]) continue;
        res++;
        vis[u] = 1;
        dfs(u);
    }
}


void solve(){
    for(int i = 0;i < 1020;i++) E[i].clear();
    for(int i = 0;i < n - 1;i++){
        int a,b;scanf("%d%d",&a,&b);
        E[a].push_back(b);
    }
    int ans = 0;
    for(int i = 1;i <= n;i++){
        memset(vis,0,sizeof(vis));
        res = 0;
        dfs(i);
        if(res == k) ans++;
    }
    printf("%d\n",ans);
}



int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    while(~scanf("%d%d",&n,&k)) solve();
    return 0;
}

 

Hdu-5326

原文:https://www.cnblogs.com/Wise-XiaoWei4/p/13708297.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!