
图论--BFS
focus_best
这个作者很懒,什么都没留下…
展开
-
POJ 3984 迷宫问题(BFS:迷宫最短路径且输出路径)
POJ 3984 迷宫问题(BFS:迷宫最短路径且输出路径)http://poj.org/problem?id=3984分析:典型的BFS应用,要你求从左上角到右下角的最短路径,且保证有唯一解,且要输出路径.直接BFS求解即可,需要用到vis数组和dist数组,用pre数组来保存当前节点的最短路径上的前一个点(或方向也行).其实也可以不用pre数组的,可以直接倒推出最短路径.原创 2014-05-10 15:51:20 · 8449 阅读 · 4 评论 -
HDU 1430 魔板(BFS+HASH+置换)
HDU 1430 魔板(BFS+HASH+置换)http://acm.hdu.edu.cn/showproblem.php?pid=1430Problem Description在魔方风靡全球之后不久,Rubik先生发明了它的简化版——魔板。魔板由8个同样大小的方块组成,每个方块颜色均不相同,可用数字1-8分别表示。任一时刻魔板的状态可用方块的颜色序列表示:从魔板的左上角开始,按顺时针原创 2014-05-25 19:52:13 · 1321 阅读 · 0 评论 -
HDU 1175 连连看(BFS)
HDU1175 连连看(BFS)http://acm.hdu.edu.cn/showproblem.php?pid=1175Problem Description“连连看”相信很多人都玩过。没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子。如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子),而且线的转折次数不超过两次,那么这两个棋子就可以在棋原创 2014-05-28 19:47:38 · 1370 阅读 · 0 评论 -
HDU 1242 Rescue(BFS或BFS+优先队列)
HDU 1242 Rescue(BFS或BFS+优先队列)http://acm.hdu.edu.cn/showproblem.php?pid=1242题意:有个R*C的迷宫,里面有一个a和多个r和多个x,现在你要从这多个r点走到a点去,且如果各自是x,则要花时间消灭守卫,即多花1分钟.问你从任意r点到a的最少时间是多少?分析: 网上题解多说用优先队列,但是对于为什么用优原创 2014-05-28 21:10:03 · 1316 阅读 · 0 评论 -
BFS学习总结
BFS学习总结 给你一个n*m的网格迷宫,迷宫中有些格子不能走,其他的格子都能走。然后给你起点与终点,问你从起点走到终点最少需要多少步? 上面的问题就是一个典型的BFS问题,对于这类问题来说,只要你掌握了这类问题的关键思想,其实他们都是可以用类似的思路来做的。建议先做两道BFS简单题,体会一下。 你可以把BFS问题想象成:从一个父亲(起点原创 2015-04-15 23:53:09 · 4321 阅读 · 2 评论 -
POJ 2046 Gap(BFS+hash判重)
POJ 2046 Gap(BFS+hash判重)http://poj.org/problem?id=2046题意:4*8的方格有28个数字,按照给定的规则移动,现在要你从初始状态移动到终结状态,问你最少几步.分析:依然是BFS. 首先我们每个状态要用一个32位的char数组s保存32个方格中的每个数字,然后我们用e[4]数组保存32个方格中(有4个0)4个0的位置分别是原创 2014-05-13 18:59:40 · 1831 阅读 · 0 评论 -
POJ 2920 Mine Map(BFS)
POJ 2920 Mine Map(BFS)http://poj.org/problem?id=2920题意:有一个n*n(n为奇数)的网格金库,金库中有地雷和空格,你从金库的正中间出发,首先如果你所在的当前格子的8个方向附近有地雷.那么你就不能走了,且标记你的当前格子为’#’.如果8方向没地雷,你就把这8方向的格子都走一遍,且标记着8个格子为’.’ . 按照这个规则走过所有你能走的格子上原创 2014-05-20 20:20:41 · 1064 阅读 · 0 评论 -
HDU 1728 逃离迷宫(BFS)
HDU 1728 逃离迷宫(BFS)http://acm.hdu.edu.cn/showproblem.php?pid=1728题意: Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走原创 2014-05-21 19:57:09 · 1185 阅读 · 0 评论 -
HDU 1226超级密码(数位BFS)
HDU 1226超级密码(数位BFS)http://acm.hdu.edu.cn/showproblem.php?pid=1226Problem DescriptionIgnatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息:密码是一个C进制的数,并且只能由给定的M个数字构成,同时密码是一个给定十原创 2014-05-25 12:47:17 · 1835 阅读 · 0 评论 -
UVA 11624 Fire!(图论BFS)
UVA 11624 Fire!(图论BFS)题意:问你Joe需要最少多长时间能走出一个大火蔓延到网格迷宫。迷宫中存在火源和障碍格。分析:朴素的做法是用BFS来模拟Joe的走法,然后看他下一步走的格子是否没有火。(判断该格子在当前时刻有没有火,只需要看看与该格子同行或同列的最近火源是哪个,然后算出起火时间即可。这样算可能会超时) 现在由于火源也是和Joe同样的朝4个方向走原创 2014-05-07 17:33:00 · 1451 阅读 · 0 评论 -
POJ 1753 Flip Game(BFS+状态压缩)
POJ 1753 Flip Game(BFS+状态压缩)http://poj.org/problem?id=1753题意:有一个4*4的黑白棋盘,棋盘上的子是两面的,一面黑,一面白.你每次选取一个子把它和它上下左右相邻的4个子都翻转,使得他们从黑变白或从白变黑.问你最少需要操作多少下可以使得所有子颜色统一.分析: 棋盘一共16个位置,所以我们用一个16位二进制数来表示棋盘原创 2014-05-10 20:32:42 · 1167 阅读 · 0 评论 -
POJ 1324 Holedox Moving(图论:BFS)
POJ 1324 Holedox Moving(图论:BFS)http://poj.org/problem?id=1324题意:有一个迷宫,问你一条蛇最少多少步能走到出口(1,1)。分析:直接BFS,不过这里的vis状态表示要注意。由于蛇最长为8格。所以我们用vis[21][21][1这样我们就能用最小的空间表示完整个蛇在迷宫的状态了.现在要求最小距离,我们不用dist[]原创 2014-05-08 20:44:37 · 1948 阅读 · 1 评论 -
POJ 2243 Knight Moves(BFS或DFS)
POJ 2243 Knight Moves(BFS实现或DFS实现)http://poj.org/problem?id=2243题意:一个8*8的中国象棋棋牌,给你两个坐标,问你马从起点走到终点最少需要几步.(马可以朝4个方向8种走法,只能走日字,具体见代码)分析:首先用BFS实现.AC代码: 0ms#include#include#includeusing nam原创 2014-05-09 21:25:35 · 1729 阅读 · 1 评论 -
POJ 1077 Eight(BFS:输出路径)
POJ 1077 Eight(BFS:输出路径)http://poj.org/problem?id=1077题意:给你一个八数码3*3的网格,要你输出解的路径.分析:参考刘汝佳入门经典P132. 首先对于每个网格状态,我们把它转化为一个9位的十进制数.然后用state[][9]二维数组来保存所有的我们已经发现的状态st,且用state[]来表示当前我们用的栈.原创 2014-05-12 13:35:41 · 1397 阅读 · 0 评论 -
POJ 3278 Catch That Cow(图论:BFS)
POJ 3278 Catch That Cow(图论:BFS)http://poj.org/problem?id=3278题意:在一个数轴上,给你一个起始点和终点,问你从起点走到终点最少需要花多长时间.你可以单步走也可以double跳跃.分析: 典型的BFS,不过注意点的坐标范围是[0,100000].AC代码:#include#include#includ原创 2014-05-07 18:35:07 · 1218 阅读 · 0 评论 -
POJ 3414 Pots(图论:BFS)
POJ 3414 Pots(图论:BFS)http://poj.org/problem?id=3414题意:给你两个容量为A和B的空水杯,要你通过3种操作(程序中分为了6种)来实现A或B杯中有一个杯子中的水是C升.分析:典型BFS问题. 不过该题目需要输出路径.所以我们用一个结构node来表示到达(i,j)状态时,它的前一个状态是node.i和node.j且操作时nod原创 2014-05-07 19:59:12 · 1451 阅读 · 0 评论 -
POJ3221 Diamond Puzzle(BFS:最短路)
POJ3221 Diamond Puzzle(BFS)http://poj.org/problem?id=3221题意:如下的平面魔方,现在给你一个魔方的初态,比如3图,要你算出从3图移动到2图的状态需要多少步。其中每步移动只能交换空格(0那格)与它相邻的格子的内容。分析:首先我们要想好怎么表示一个状态,我们用一个人char s[10]来表示状态,比如2图的状态是0123456.原创 2014-05-17 19:21:56 · 1117 阅读 · 0 评论 -
POJ 3322 Bloxorz I(BFS:求迷宫最短路径)
POJ 3322 Bloxorz I(BFS:求迷宫最短路径)http://poj.org/problem?id=3322题意:有一个R*C的网格,网格中有3种格子:正常格子,脆弱格子以及空格子.现在给你一个1*2立方体的初始位置,要你求出将该立方体移动到终点所需要的最小步数.分析:其实和一般的BFS求最短路径没本质区别,就是状态设计和移动可能复杂点. 我们令1原创 2014-05-14 18:11:42 · 2083 阅读 · 2 评论 -
POJ 1915 Knight Moves(DFS/BFS)
POJ 1915 Knight Moves(DFS/BFS)http://poj.org/problem?id=1915题意:一个N*N的棋牌上,问你中国象棋的马从一个指定点走到另外一个指定点最少需要多少步.分析:由下面DFS和BFS的做法可以看出,BFS的代码虽然比DFS的代码复杂,但是对于某些题目速度上还是很有优势的.本题类似http://blog.youkuaiyun.com原创 2014-05-10 18:57:01 · 1461 阅读 · 0 评论 -
POJ 3346 Treasure of theChimp Island(BFS)
POJ 3346 Treasure of theChimp Island(BFS)http://poj.org/problem?id=3346题意:有一个迷宫,有宝藏,你必须从迷宫边缘进去,迷宫边缘的门有可能让你携带0-9颗炸弹,在迷宫里面有’.’表示空地,你走过空地不需要花任何时间,有’*’表示不可行格子,你就算用炸弹也不能走到这种格子上.还有标记了数字的格子,这种格子如果你消耗一颗炸弹原创 2014-05-13 15:26:14 · 1117 阅读 · 1 评论 -
HDU 1240 Asteroids!(BFS)
HDU1240 Asteroids!(BFS)题意:给你一个n*n*n的三维网格,并且给出初始和终点,要你求最短路径.分析:很简单的三维BFS,直接算即可.注意细节.AC代码:#include#include#includeusing namespace std;const int maxn=15;int dr[]={-1,1,0,0,0,0};//前后左右上下int原创 2014-05-21 20:40:01 · 988 阅读 · 0 评论 -
HDU 1072 Nightmare(BFS)
HDU 1072 Nightmare(BFS)http://acm.hdu.edu.cn/showproblem.php?pid=1072题意:有一个N*M的迷宫,你要从起点2走到终点3,且你身上有炸弹,这个炸弹6分钟后爆炸,你在迷宫中每走一步需要1分钟,且迷宫中有重置装置(4格子),可以使得你的炸弹爆炸时间重新变为6.不过不论是你到达终点还是你到达重置装置的地方,你身上的炸弹爆炸时间一定原创 2014-05-25 14:01:33 · 1050 阅读 · 1 评论 -
POJ2110 Mountain Walking(BFS/DFS+二分+枚举区间)
POJ2110 Mountain Walking(BFS/DFS+二分+枚举区间)http://poj.org/problem?id=2110题意: 给你一个N*N的网格,并给出网格中每个点的海拔高度,现在要你找出从左上角到右下角那个点的一条路,且这条路所有点中,最高海拔-最低海拔之差最小。输出该最小值。分析:此题与POJ2922基本一致:http://blog.youkuaiyun.com/原创 2014-05-18 00:44:33 · 1424 阅读 · 0 评论 -
POJ 1465 Multiple(BFS+同余剪枝)
POJ 1465 Multiple(BFS+同余剪枝)http://poj.org/problem?id=1465题意:给你一个属于[0,4999]的数n和多个十进制单数字.现在要求你输出一个m,这个m是n的最小倍数,且仅有我们之前给出的数字构成.分析: 首先我们要知道如果存在由m个数位组成且是n的最小倍数的数,那么这个数一定每一位都是指定的数位.所以我们用BFS从0开原创 2014-05-21 11:35:36 · 2220 阅读 · 0 评论 -
HDU 1312 Red and Black(简单BFS)
HDU1312 Red and Black(简单BFS)http://acm.hdu.edu.cn/showproblem.php?pid=1312题意:给你一个R*C的网格,网格只有黑格和红格,初始你在一个黑格上,然后你只能走黑格,问你最多能走多少个黑格.(包括起点)分析:直接BFS,算是最基础的BFS了吧.AC代码:#include#include#include原创 2014-05-28 11:53:35 · 1160 阅读 · 0 评论 -
HDU 1253 胜利大逃亡(简单三维BFS)
HDU 1253 胜利大逃亡(简单三维BFS)http://acm.hdu.edu.cn/showproblem.php?pid=1253题意:有一个A*B*C的三维网格,问你从起点(0,0,0)走到终点(A-1,B-1,C-1)最少需要花多少时间.且网格中有障碍格.分析:三维网格的难点在于想象出一个符合二维BFS要求的图形.如果只有2维,那么就是B*C的二维网格了,很好处原创 2014-05-28 12:28:54 · 1337 阅读 · 0 评论 -
HDU 2579 Dating with girls(2)(BFS)
HDU 2579 Dating with girls(2)(BFS)http://acm.hdu.edu.cn/showproblem.php?pid=2579题意:依然是一个R*C的迷宫,要你找从起点到终点的最短距离,但是这里有点小变化,如果是障碍的格子在k倍数的时间点会消失.分析:一般的BFS,直接做即可.需要vis与dist数组.注意在此题中,人不能停留,也就是说如果你在此时原创 2014-05-22 00:48:09 · 1123 阅读 · 0 评论 -
HDU 1401 Solitaire(棋盘状态BFS)
HDU 1401 Solitaire(棋盘状态BFS)http://acm.hdu.edu.cn/showproblem.php?pid=1401题意:对于一个8*8的棋牌,其中有4个棋子,每个棋子可以往上下左右各走一步,但是如果那一步不是空格而是另外一个棋子,那么就越过这个棋子再前进一步.现在给出了初始棋盘状态,和终结棋盘状态,问你在8步内(分析:本题应该用双向BFS,单BFS容易超原创 2014-05-28 18:39:10 · 2089 阅读 · 0 评论 -
HDU 1180 诡异的楼梯(BFS:时间动态图)
HDU 1180 诡异的楼梯(BFS:时间动态图)http://acm.hdu.edu.cn/showproblem.php?pid=1180Problem DescriptionHogwarts正式开学以后,Harry发现在Hogwarts里,某些楼梯并不是静止不动的,相反,他们每隔一分钟就变动一次方向. 比如下面的例子里,一开始楼梯在竖直方向,一分钟以后它移动到了水平方向,原创 2014-05-27 19:54:55 · 1432 阅读 · 0 评论 -
POJ 1606 Jugs(BFS:找最短路径并输出)
POJ 1606 Jugs(BFS:找最短路径并输出)http://poj.org/problem?id=1606题意:又是给你两个容量为A和B的水杯,要你倒出B杯子有C升水的路径.分析:本题之前我就做过一道基本一样的:http://blog.youkuaiyun.com/u013480600/article/details/25241777上面有分析.下面直接给出代码:AC代码:原创 2014-05-11 21:07:21 · 2135 阅读 · 0 评论 -
HDU 1495 非常可乐(BFS:3杯倒水)
HDU 1495 非常可乐(BFS:3杯倒水)http://acm.hdu.edu.cn/showproblem.php?pid=1495题意: 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N原创 2014-05-25 17:37:31 · 1258 阅读 · 0 评论 -
HDU 2612 Find a way(BFS)
HDU 2612 Find a way(简单BFS)http://acm.hdu.edu.cn/showproblem.php?pid=2612题意:给你一个N*M的迷宫,现在给你A和B的初始坐标,他们要在’@’点集合(迷宫可能有多个’@’点),问你他们集合的最少时间是多少.分析:直接从A和B的初始坐标分别做两次BFS即可,然后对于每个’@’点,算出A和B分别到’@’的距离,相加即可.原创 2014-05-25 21:58:34 · 1068 阅读 · 0 评论 -
HDU 2531 Catch him(BFS:判断是否存在路径)
HDU 2531 Catch him(BFS:判断是否存在路径)http://acm.hdu.edu.cn/showproblem.php?pid=2531题意:给你一个R*C的棋盘,但是现在不是一个格子移动了,而是多个格子组成的一个防守队员平移一个距离,但是这个组合防守队员格不可以转动身体,且身体不能触碰到O格子.最终只要身体能触碰到Q格子就算赢.分析:BFS的精髓在于你设计一个结构原创 2014-05-29 10:39:53 · 1497 阅读 · 0 评论 -
HDU 1547 Bubble Shooter(BFS)
HDU 1547 Bubble Shooter(BFS)http://acm.hdu.edu.cn/showproblem.php?pid=1547题意:如下图的游戏,R*C的棋盘格局,左上角是第1行1列,其中奇数行可以放C个不同颜色的气球,偶数行可以放C-1个不同颜色的气球.且如果我们新打一个气球到给定位置,>=3个相连的同颜色气球会爆炸,且如果某一块气球没有和最顶端的墙想连也会爆炸.原创 2014-05-28 10:06:27 · 1578 阅读 · 0 评论