利用BFS实现最短路
首先,我们要知道BFS的思想,BFS全称是Breadth-First-Search。
二叉树的BFS:通过BFS访问,它们的访问顺序是它们到根节点距离从小到大的排序。
图的BFS:同样的,离起点越近,越早被访问到。
例题1: Abbott的复仇(Abbott's Revenge,ACM/ICPC World Finals 2000,UVa 816)
题目描述:有一个最多包含9x9个交叉点的迷宫。输入起点、起始朝向、终点,求最短路。
这个迷宫的特殊之处在于:进入一个交叉点的方向不同(NEWS:N朝上,E朝右,W朝左,S朝下),允许出去的方向也不同。
例如:1 2 WLF NR ER * 表示交叉点(1,2)有三个路标,(字符*为结束标志),如果进入该交叉点时的方向为W(左),则可以L(左转)或F(直行)。如果进入时方向为N(上)或者E(右),则只能R(右转)。
如图所示:
keep going