hdoj 4707 BFS

 1 #include <iostream>
 2 #include <vector>
 3 #include <queue>
 4 #include <string.h>
 5 #include <stdlib.h>
 6 #include <stdio.h>
 7 using namespace std;
 8 const int MAXN=1000010;
 9 vector<int> vec[MAXN];
10 int dep[MAXN];
11 //int pre[MAXN];
12 void bfs(int s)
13 {
14     memset(dep,-1,sizeof(dep));
15     dep[s]=0;
16     queue<int> q;
17     q.push(s);
18     while(!q.empty()){
19         int u = q.front();
20         q.pop();
21         int sz = vec[u].size();
22         for(int i=0;i<sz;i++){
23             int v = vec[u][i];
24             if(dep[v]!=-1) continue;
25             dep[v]=dep[u]+1;
26 //            pre[v]=u;
27             q.push(v);
28         }
29     }
30 
31 }
32 void dfs(int x)
33 {
34 
35     for(unsigned i=0;i<vec[x].size();i++)
36     {
37         dep[vec[x][i]]=dep[x]+1;
38         dfs(vec[x][i]);
39     }
40     return;
41 }
42 
43 int main()
44 {
45     int T;
46     int n;
47     int D;
48     scanf("%d",&T);
49     while(T--)
50     {
51         scanf("%d%d",&n,&D);
52         int u,v;
53         for(int i=0;i<n;i++){
54             vec[i].clear();
55         }
56 
57         for(int i=1;i<n;i++){
58             scanf("%d%d",&u,&v);
59             vec[u].push_back(v);
60             vec[v].push_back(u);
61         }
62         bfs(0);
63         int ans=0;
64         for(int i=0;i<n;i++){
65             if(dep[i] > D)
66                 ans++;
67         }
68         cout<<ans<<endl;
69 
70 
71     }
72 
73     return 0;
74 }

 

转载于:https://www.cnblogs.com/vector11248/p/6249738.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值