博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU4707:Pet(DFS)
阅读量:6832 次
发布时间:2019-06-26

本文共 2250 字,大约阅读时间需要 7 分钟。

Problem Description
One day, Lin Ji wake up in the morning and found that his pethamster escaped. He searched in the room but didn’t find the hamster. He tried to use some cheese to trap the hamster. He put the cheese trap in his room and waited for three days. Nothing but cockroaches was caught. He got the map of the school and foundthat there is no cyclic path and every location in the school can be reached from his room. The trap’s manual mention that the pet will always come back if it still in somewhere nearer than distance D. Your task is to help Lin Ji to find out how many possible locations the hamster may found given the map of the school. Assume that the hamster is still hiding in somewhere in the school and distance between each adjacent locations is always one distance unit.
 

 

Input
The input contains multiple test cases. Thefirst line is a positive integer T (0<T<=10), the number of test cases. For each test cases, the first line has two positive integer N (0<N<=100000) and D(0<D<N), separated by a single space. N is the number of locations in the school and D is the affective distance of the trap. The following N-1lines descripts the map, each has two integer x and y(0<=x,y<N), separated by a single space, meaning that x and y is adjacent in the map. Lin Ji’s room is always at location 0.
 

 

Output
For each test case, outputin a single line the number of possible locations in the school the hamster may be found.
 

 

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

 

题意:所有房子组成一颗树,求出离根节点0的距离大于d的节点数目

思路:建树深搜

 

#include 
#include
#include
using namespace std;struct node{ int next,to; int step;} a[100005];int head[100005];int n,d,len,ans;void add(int x,int y){ a[len].to = y; a[len].next = head[x]; head[x] = len++;}void dfs(int x,int step){ int i,j,k; if(-1 == head[x]) return ; for(i = head[x]; i!=-1; i = a[i].next) { k = a[i].to; a[i].step = step+1; if(a[i].step>d) ans++; dfs(k,a[i].step); }}int main(){ int T,i,j,x,y; scanf("%d",&T); while(T--) { memset(head,-1,sizeof(head)); memset(a,0,sizeof(a)); scanf("%d%d",&n,&d); len = 0; for(i = 1; i

 

 

转载地址:http://eejkl.baihongyu.com/

你可能感兴趣的文章
《QQ欢乐斗地主》山寨版
查看>>
病毒木马查杀实战第015篇:U盘病毒之脱壳研究
查看>>
SDK是什么?什么是SDK
查看>>
centos/linux下的使得maven/tomcat能在普通用户是使用
查看>>
Web学习篇之---html基础知识(一)
查看>>
java多线程入门学习(一)
查看>>
多线程间的通讯之等待唤醒机制
查看>>
Shell中整数比較
查看>>
IOS应用内购(一)内购的种类
查看>>
canvas图形处理和进阶用法
查看>>
传输PDF文档的好帮手
查看>>
更新部分屏幕内容
查看>>
The server does not support version 3.0 of the J2EE Web module specification
查看>>
SQL Server内存
查看>>
MPU6050带字符驱动的i2c从设备驱动2
查看>>
深入探析c# Socket
查看>>
Python 全集变量
查看>>
1. 请问PHP里的ECHO是什么意思 ?请问PHP里的ECHO是什么意思???有什么作用???又应该怎么使用???...
查看>>
ES6,数组遍历
查看>>
如何把浏览器不信任的网址设置为可信任的网点
查看>>