HDU 4707 Pet(BFS)
2013-09-12 18:56
357 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4707
题目大意:在一个无环的,从0开始发散状的地图里,找出各个距离0大于d的点的个数
[align=left]Sample Input[/align]
1
10 2
0 1
0 2
0 3
1 4
1 5
2 6
3 7
4 8
6 9
[align=left]Sample Output[/align]
2
分析:从0点开始BFS,给每个点一个距离0点标记,再算出大于距离d一共多少个
代码如下:
题目大意:在一个无环的,从0开始发散状的地图里,找出各个距离0大于d的点的个数
[align=left]Sample Input[/align]
1
10 2
0 1
0 2
0 3
1 4
1 5
2 6
3 7
4 8
6 9
[align=left]Sample Output[/align]
2
分析:从0点开始BFS,给每个点一个距离0点标记,再算出大于距离d一共多少个
代码如下:
# include<iostream> # include<cstdio> # include<vector> # include<queue> # include<algorithm> # define N 100010 using namespace std; vector<int >e ; int dis ; bool vis ; int main() { int T; int i,n,d,a,b; scanf("%d",&T); while(T--) { scanf("%d%d",&n,&d); for(i=0; i<=n; i++) { e[i].clear(); dis[i] = N; vis[i] = 0; } dis[0] = 0; for(i=1; i<n; i++) { scanf("%d%d",&a,&b); e[a].push_back(b); e[b].push_back(a); } queue<int >q; q.push(0); vis[0] = 1; while(!q.empty()) { int x = q.front(); q.pop(); for(i=0; i<e[x].size(); i++) { int y = e[x][i]; if(!vis[y]) { vis[y] = 1; dis[y] = dis[x] + 1; q.push(y); } } } int ans = 0; for(i=0; i<n; i++) if(dis[i] > d) ans ++; printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU 4707 Pet 图的遍历(BFS和DFS)
- HDU 4707 Pet(BFS,统计树节点深度)
- hdu 4707 Pet【BFS求树的深度】
- hdu 4707 Pet(dfs,bfs)
- HDU 4707 Pet(DFS(深度优先搜索)+BFS(广度优先搜索))
- Pet(hdu 4707 BFS)
- hdu 4707 Pet【BFS求树的深度】
- HDU 4707--Pet【DFS && 邻接表】
- HDU 4707 Pet(邻接表dfs)
- hdu 4707 仓鼠 记录深度 (BFS)
- HDU 4707Pet
- hdu 4707 Pet【带权并查集】
- 【HDU】-4707-Pet(并查集,好)
- HDU 4707 Pet (热身赛第二题)
- HDU 4707 Pet ( DFS 啊)
- HDU 4707 Pet && 2013 ACM/ICPC Asia Regional Online —— Warmup
- hdu - 4707 - Pet
- HDU:4707 Pet(并查集+某元素到根节点的距离计算)
- hdu 4707 Pet
- hdu 4707 Pet 2013年ICPC热身赛A题 dfs水题