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 ...
随机推荐
- 简要解析XMPP框架及iOS-Objective-C的使用
前言:这两天看了XMPP框架,查阅了一些资料,写下这篇文章记录一下学习笔记 一.简要解析XMPP核心部分 XMPP框架分为两个部分 1.核心部分 2.扩展部分 扩展部分主要讲好友列表(roster). ...
- list和用vector区别(Vector相当于是数组,读写快,插入慢)
stl提供了三个最基本的容器:vector,list,deque. vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由 ...
- 微软新一代输入法框架 TSF - Text Service Framework 小小的研究
实际上windows中有两套输入法框架,一套叫做imm32.一套叫做tsf,win7以后的新系统都是优先使用tsf的,现在新出的输入法基本也是基于tsf的. 你可以参考一下这篇文章,虽然是c++的代码 ...
- 转:onConfigurationChanged的作用
API原文说明:android:configChangesLists configuration changes that the activity will handle itself. When ...
- WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[扩展篇]
原文:WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)[扩展篇] 通过<实现篇>对WSDL元素和终结点三要素的之间的匹配关系的介绍,我们知道了WSDL的Binding ...
- 基于visual Studio2013解决C语言竞赛题之1009补数
题目 解决代码及点评 /************************************************************************/ ...
- C++ map排序(按照value值排序)_glp_hit_新浪博客
C++ map排序(按照value值排序)_glp_hit_新浪博客 C++ map排序(按照value值排序) (2012-07-12 14:19:51) 转载▼ 标签: ...
- Flexigrid的编辑功能
editCells:function(){ if(!isEditing){ isEditing = true; $('tbody tr',$(t)).each(function () { for(va ...
- dfs-hdu-4620-Fruit Ninja Extreme
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4620 题目大意: 切水果.给n刀,每刀的时间,每刀切的水果的种类.求能切的最多的刀数,使得每相邻的两 ...
- HDU 2896 病毒侵袭 AC自己主动机题解
本题是在text里面查找key word的增强版.由于这里有多个text. 那么就不能够简单把Trie的叶子标志记录改动成-1进行加速了,能够使用其它技术.我直接使用个vis数组记录已经訪问过的节点, ...