标签:
7 2 1 2 1 3 2 4 2 5 3 6 3 7
2
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> using namespace std; struct node { int u; int v; int next; }edge[100000]; int cnt; int head[1000],vis[1000],sum[1000]; void add(int u,int v) { edge[cnt].u=u; edge[cnt].v=v; edge[cnt].next=head[u]; head[u]=cnt++; } void dfs(int u) { vis[u]=1; for(int i=head[u];i!=-1;i=edge[i].next) { int v=edge[i].v; if(vis[v]==0) { sum[u]++; dfs(v); sum[u]+=sum[v]; } } } int main() { int n,k,i,a,b,v; while(scanf("%d%d",&n,&k)!=EOF) { cnt=0; memset(head,-1,sizeof(head)); for(i=1;i<=n-1;i++) { scanf("%d%d",&a,&b); add(a,b); } memset(sum,0,sizeof(sum)); memset(vis,0,sizeof(vis)); for(i=1;i<=n;i++) { if(vis[i]==0) { dfs(i); } } v=0; for(i=1;i<=n;i++) { if(sum[i]==k) { v++; } } printf("%d\n",v); } return 0; }
版权声明:本文为博主原创文章,如有特殊需要请与博主联系 QQ : 793977586。
标签:
原文地址:http://blog.csdn.net/yeguxin/article/details/47129109