hdu 4707 bfs

来源:互联网 发布:办公网络 编辑:程序博客网 时间:2024/06/06 03:27

bfs基础算法水题

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<queue>using namespace std;const int Max = 1e5+50;int dist[Max];vector<int> tree[Max];int N, D, T;void init(){for(int i = 0; i < Max-40; i ++){tree[i].clear();}memset(dist, 0, sizeof(dist));}int ans;void bfs(){int t = 0, dis = 0;queue<int> q;q.push(t);ans ++;while(!q.empty()){t = q.front();q.pop();if(dist[t] + 1 > D) continue;for(int i = 0; i < tree[t].size(); i ++){dist[tree[t][i]] = dist[t] + 1;ans ++;q.push(tree[t][i]);}}}int main(){int x, y;scanf("%d", &T);while(T --){init();scanf("%d%d", &N, &D);for(int i = 0; i < N-1; i ++){scanf("%d%d", &x, &y);tree[x].push_back(y);}ans = 0;bfs();printf("%d\n", N-ans);}return 0;} 


0 0