意甲冠军:给定一个N*M图.,间'X'代表树木(树木必须汇集到森林,非分离),然后,'.'它代表的空间.'*'它代表的起点.现在它需要从起点.一圈,最后回到起点,所经过最少点数. 题目中给的'+'就是当中一种最短路径. 题解:随便找一条经过森林且不经过起点的直线,可证路径一定会穿过这条直线.那么就在这条直线上枚举一个点,做两遍BFS,求其从分别直线两側出发到起点的最短距离. 在这里说一个推断边界的简单方法,就是先给图里每一个点打上标记.详见代码里'in'数组.in值为0的自然就不再里面,而没有必…
P2864 [USACO06JAN]树林The Grove(bfs) 题面 题目描述 The pasture contains a small, contiguous grove of trees that has no 'holes' in the middle of the it. Bessie wonders: how far is it to walk around that grove and get back to my starting position? She's just s…
题目:http://poj.org/problem?id=3182 题意:一个棋盘中间有一个联通块,给你一个起点让你从起点开始绕联通块外围一圈并回到起点,求最小步数. 分析: 首先根据数据的范围比较小,所以觉得应该是搜索,而且是BFS. 朴素的想法是从起点开始BFS 8个方向扩展,不过这样肯定要跪. 注意到这个题目的特点:路径要围一个联通块,而我们一般做的BFS是从一个起点到终点,这之间可以转化吗? 当然可以,围起联通块相当于从联通块边界上一点出发向两边BFS到起点!!!!! 具体实现的话,可以…
题目链接:http://poj.org/problem?id=3984 宽度优先搜索最短路径的记录和打印问题 #include<iostream> #include<queue> #include<cstring> #include<cstdio> using namespace std; ][]; ][] = {,,,-,,,-,}; struct node { int x,y; int prex,prey; }path[][],temp; void bf…
The Grove Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 904   Accepted: 444 Description The pasture contains a small, contiguous grove of trees that has no 'holes' in the middle of the it. Bessie wonders: how far is it to walk around t…
思路:如果要围绕一圈,必须经过一条竖线上的一点,把竖线左端封住,bfs一次,枚举点,再把竖线右端封住,再bfs回起点. #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn=5e1+9,inf=1e9; char a[maxn][maxn],now[maxn][maxn]; int dist[maxn][maxn],d[maxn][maxn…
下载了一款推箱子小游戏,第13关的时候怎么也破不了最佳纪录(最少步数是9而我们最好的方案是10步),因为数据比较小(6*8的方阵),所以写了个BFS来找最短路. 游戏的目标是把小黄人推到黄色球,小绿人推到绿色球,有个限制是,小黄/绿人运动时会沿某一个方向一直走直到遇到边界或者障碍物,如果途中遇到传送带还会改变运动方向. -----------------------------------------------------------------------------------------…
http://poj.org/problem?id=3278 Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 146388   Accepted: 44997 Description Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He sta…
BFS 代码步骤: 1.写出每个点和每个点的邻接点的对应关系 2.方法参数:传一个对应关系和起始点 3.创建一个队列,然后每次都移除第一个,然后把移除的邻接点添加进去,打印取出的第一个,然后循环,一直到队列没有元素 import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.…
华电北风吹 天津大学认知计算与应用重点实验室 最后改动日期:2015/8/22 无向图的存储方式有邻接矩阵,邻接链表,稀疏矩阵等. 无向图主要包括双方面内容,图的遍历和寻找联通分量. 一.无向图的遍历 无向图的遍历有两种方式-广度优先搜索(BFS)和深度优先搜索(DFS).广度优先搜索在遍历一个顶点的全部节点时,先把当前节点全部相邻节点遍历了.然后遍历当前节点第一个相邻的节点的全部相邻节点,广度优先搜索使用队列来实现.深度优先搜索在遍历当前节点的全部相邻节点时,先对当前节点的第一个相邻节点进行訪…