HDU 4707 Pet(DFS(深度优先搜索)+BFS(广度优先搜索))
Pet
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 535 Accepted Submission(s): 258
10 2
0 1
0 2
0 3
1 4
1 5
2 6
3 7
4 8
6 9
DFS(深度优先搜索)
import java.io.*;
import java.util.*;
public class Main {
BufferedReader bu;
PrintWriter pw;
int MAX=1000001;
int t,n,d,e,num; int head[]=new int[MAX];
Node node[]=new Node[MAX];
boolean boo[]=new boolean[MAX]; public static void main(String[] args) throws Exception{
new Main().work();
}
void work()throws Exception{
bu=new BufferedReader(new InputStreamReader(System.in));
pw=new PrintWriter(new OutputStreamWriter(System.out),true); t=Integer.parseInt(bu.readLine());
while(t--!=0){
String str[]; str=bu.readLine().split(" ");
n=Integer.parseInt(str[0]);
d=Integer.parseInt(str[1]);
e=0;
num=1;
Arrays.fill(head, -1);
Arrays.fill(boo,false); for(int i=1;i<n;i++){
str=bu.readLine().split(" ");
int a=Integer.parseInt(str[0]);
int b=Integer.parseInt(str[1]); add(a,b);
add(b,a);
}
boo[0]=true;
DFS(0,0);
pw.println(n-num);
}
} void DFS(int x,int index){
if(index>=d)
return;
for(int i=head[x];i!=-1;i=node[i].next){
int v=node[i].v;
if(!boo[v]){
boo[v]=true;
num++;
DFS(v,index+1);
}
}
} void add(int a,int b){
node[e]=new Node();
node[e].v=b;
node[e].next=head[a];
head[a]=e++;
} class Node{
int v;
int next;
}
}
BFS(广度优先搜索)
import java.io.*;
import java.util.*;
public class Main {
BufferedReader bu;
PrintWriter pw;
Queue<Integer> que;
int MAX=200010;
int t,n,d,e,num; int[] head=new int[MAX];
boolean[] boo=new boolean[MAX];
Node[] node=new Node[MAX];
int dis[]=new int[MAX];
public static void main(String[] args) throws Exception{
new Main().work();
}
void work()throws Exception{
bu=new BufferedReader(new InputStreamReader(System.in));
pw=new PrintWriter(new OutputStreamWriter(System.out),true);
que=new LinkedList<Integer>();
t=Integer.parseInt(bu.readLine());
String str[];
while(t--!=0){
str=bu.readLine().split(" ");
n=Integer.parseInt(str[0]);
d=Integer.parseInt(str[1]); Arrays.fill(head,-1);
Arrays.fill(boo, false);
Arrays.fill(dis,0);
que.clear(); e=0;
num=0; for(int i=1;i<n;i++){
str=bu.readLine().split(" ");
int a=Integer.parseInt(str[0]);
int b=Integer.parseInt(str[1]);
add(a,b);
add(b,a);
}
boo[0]=true;
que.add(0);
BFS();
pw.println(num);
}
}
void BFS(){
while(!que.isEmpty()){
int t=que.poll();
for(int i=head[t];i!=-1;i=node[i].next){
int u=node[i].v;
if(!boo[u]){
dis[u]=dis[t]+1;
boo[u]=true;
que.add(u);
}
}
}
for(int i=0;i<n;i++){
if(dis[i]>d&&boo[i])
num++;
}
}
void add(int a,int b){
node[e]=new Node();
node[e].v=b;
node[e].next=head[a];
head[a]=e++;
}
class Node{
int v;
int next;
}
}
HDU 4707 Pet(DFS(深度优先搜索)+BFS(广度优先搜索))的更多相关文章
- DFS_BFS(深度优先搜索 和 广度优先搜索)
package com.rao.graph; import java.util.LinkedList; /** * @author Srao * @className BFS_DFS * @date ...
- 0算法基础学算法 搜索篇第二讲 BFS广度优先搜索的思想
dfs前置知识: 递归链接:0基础算法基础学算法 第六弹 递归 - 球君 - 博客园 (cnblogs.com) dfs深度优先搜索:0基础学算法 搜索篇第一讲 深度优先搜索 - 球君 - 博客园 ( ...
- BFS广度优先搜索 poj1915
Knight Moves Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 25909 Accepted: 12244 Descri ...
- 图的遍历BFS广度优先搜索
图的遍历BFS广度优先搜索 1. 简介 BFS(Breadth First Search,广度优先搜索,又名宽度优先搜索),与深度优先算法在一个结点"死磕到底"的思维不同,广度优先 ...
- 算法竞赛——BFS广度优先搜索
BFS 广度优先搜索:一层一层的搜索(类似于树的层次遍历) BFS基本框架 基本步骤: 初始状态(起点)加到队列里 while(队列不为空) 队头弹出 扩展队头元素(邻接节点入队) 最后队为空,结束 ...
- DFS+BFS(广度优先搜索弥补深度优先搜索遍历漏洞求合格条件总数)--09--DFS+BFS--蓝桥杯剪邮票
题目描述 如下图, 有12张连在一起的12生肖的邮票.现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连) 比如,下面两张图中,粉红色所示部分就是合格的剪取. 请你计算,一共有多少 ...
- 深度优先dfs与广度bfs优先搜索总结+例题
DFS(Deep First Search)深度优先搜索 深度优先遍历(dfs)是对一个连通图进行遍历的算法.它的思想是从一个顶点开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节 ...
- 步步为营(十六)搜索(二)BFS 广度优先搜索
上一篇讲了DFS,那么与之相应的就是BFS.也就是 宽度优先遍历,又称广度优先搜索算法. 首先,让我们回顾一下什么是"深度": 更学术点的说法,能够看做"单位距离下,离起 ...
- 【js数据结构】图的深度优先搜索与广度优先搜索
图类的构建 function Graph(v) {this.vertices = v;this.edges = 0;this.adj = []; for (var i = 0; i < this ...
随机推荐
- freemarker序列的拆分
freemarker序列的拆分 1.简易说明 序列的拆分能够是数组.字符串.布尔值等等 2.实现源代码 <#--freemarker序列的拆分--> ${"hudjfkskhd你 ...
- SD-关于定价日期的设置
最近看了一篇关于定价日期的文章,我觉得写得很不错,特将自己的理解摘抄如下: 关于SD的定价日期在SAP系统中有三个配置与其相关,以及手工输入定价日期,具体如下: 1.订单类型的“定价日期建议“ 这个字 ...
- 04-UIKit(UINavigationController、NSAttributeString、UIImageView)
目录: 一.UINavigationController导航视图控制器 二.NSAttributeString属性字符串 三.UIImageView图像处理 回到顶部 一.UINavigationCo ...
- 设计模式(二)单件模式Singleton(创建型)
SINGLETON(单件)—对象创建型模式 几乎所有面向对象的程序中,总有一些类的对象需要是唯一的,例如,通过数据库句柄到数据库的连接是独占的.您希望在应用程序中共享数据库句柄,因为在保持连接打开或关 ...
- UVALive 6584 Escape (Regionals 2013 >> Europe - Central)
题目 给出一棵树,每个节点有一个怪物或血药,遇到怪物必须打,打完后扣掉一定的血量. 一开始英雄的血量为\(0\),当血量小于\(0\)时就挂了. 给出英雄的起点和终点,问能否成功到达终点. 算法 这题 ...
- highcharts dynamic change line color
mouseOut: function(){ this.series.graph.attr({"stroke","#ccc"}) }
- AT&T汇编
AT&T汇编和8086汇编语言虽然两者很相似,但是还是不能根据8086的语法规则来读AT&T汇编的吧,所以还是要看看AT&T汇编的语法规则,因为在读内核代码时,跟硬件打交道的部 ...
- 在Web Api中快速实现JSonp
本文翻译自:http://www.codeproject.com/Tips/631685/JSONP-in-ASP-NET-Web-API-Quick-Get-Started Concept: 同源策 ...
- 【jQuery】smartMenu右键自定义上下文菜单插件(似web QQ)
(前端用重点整理博客地址)链接地址:http://www.cnblogs.com/atree/archive/2011/06/30/jQuery-smartMenu-javascript.html 一 ...
- Windows Services的1053错误的解决办法之一:修改注册表允许的响应时间
Error: 'The service did not respond in a timely fashion' (ServicesPipeTimeout) when attempting when ...