hdu 4707 仓鼠 记录深度 (BFS)
2015-05-15 22:56
357 查看
题意:linji的仓鼠丢了,他要找回仓鼠,他在房间0放了一块奶酪,按照抓鼠手册所说,这块奶酪可以吸引距离它D的仓鼠,但是仓鼠还是没有出现,现在给出一张关系图,表示各个房间的关系,相邻房间距离为1,而且图中没有回路,每个房间都是联通的,求仓鼠可能出现的房间的数量。
Sample Input
1
10 2
0 1
0 2
0 3
1 4
1 5
2 6
3 7
4 8
6 9
Sample Output
2
#include <cstdio> #include <algorithm> #include <iostream> #include <vector> #include <queue> using namespace std; const int MAXN = 100010; vector<int>vec[MAXN]; int dep[MAXN]; int pre[MAXN]; void bfs(int s) { memset(dep,-1,sizeof(dep)); dep[s] = 0; queue<int>q; q.push(s); while(!q.empty()) { int u = q.front(); q.pop(); int sz = vec[u].size(); for(int i = 0;i < sz;i++) { int v = vec[u][i]; if(dep[v] != -1)continue; dep[v] = dep[u] + 1; pre[v] = u; q.push(v); } } } int main() { //freopen("in.txt","r",stdin) ; int T; int n; int D; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&D); int u,v; for(int i = 0;i < n;i++) vec[i].clear(); for(int i = 1;i < n;i++) { scanf("%d%d",&u,&v); vec[u].push_back(v); vec[v].push_back(u); } bfs(0); int ans = 0; for(int i = 0;i < n;i++) if(dep[i] > D) ans++; cout<<ans<<endl; } return 0; }View Code
相关文章推荐
- HDU 4707 Pet(BFS,统计树节点深度)
- hdu 4707 Pet【BFS求树的深度】
- hdu 4707 Pet【BFS求树的深度】
- HDU 4707 Pet(DFS(深度优先搜索)+BFS(广度优先搜索))
- 【HDU】1254 推箱子(BFS DFS HASH记录走过的状态)
- HDU1026--Ignatius and the Princess I(BFS记录路径)
- hdu 1226 BFS + bfs记录路径
- HDU 1026 Ignatius and the Princess I(BFS+记录路径)
- HDU 1026 Ignatius and the Princess I (BFS+记录路径)
- HDU 1026.Ignatius and the Princess I【BFS广度优先搜索+优先队列+前驱记录】【8月16】
- Pet(hdu 4707 BFS)
- hdu 1026 bfs+记录路径
- HDU 4707 最后还是用了BFS。。。
- HDU 1026 Ignatius and the Princess I(bfs +记录路径)
- HDU 4707 Pet(DFS:树深度相关)
- hdu 4707 bfs
- hdu 1026 Ignatius and the Princess I (bfs记录路径 两种记录路径方法模拟优先队列和优先队列两种做法)
- HDU 1026Ignatius and the Princess I(bfs+记录路径)
- hdu 1226 BFS + bfs记录路径
- hdu 4707 Pet(dfs,bfs)