hdu5326 Work

来源:互联网 发布:sas数据分析大赛 编辑:程序博客网 时间:2024/06/06 06:59

Work

大致题意:给你一些关系,告诉你某某人直接领导某某人,现在要求有n个部下的人有多少;

用dfs做,并用p数组进行记录,以免重复运算

代码附上

#include<iostream>#include<cstring>using namespace std;const int MAXN=120;int n;int lead[MAXN][MAXN],p[MAXN];int doit(int x){    int i,sum=0;    for (i=1;i<=n;i++)        if (lead[x][i]==1)        if (p[i]!=0) sum+=p[i]+1;         else sum+=doit(i)+1;    p[x]=sum;    return sum;}int main(){   int k,i,a,b,num;   while (cin>>n>>k)   {       memset(p,0,sizeof(p));       memset(lead,0,sizeof(lead));       for (i=1;i<=n-1;i++)       {           cin>>a>>b;           lead[a][b]=1;       }       for (i=1;i<=n;i++)        if (p[i]==0)            p[i]=doit(i);       num=0;       for (i=1;i<=n;i++)        if (p[i]==k) num++;        cout<<num<<endl;   }}


0 0
原创粉丝点击