题目解析
本题是求两点之间的最短路径。
对于最短路径问题,最简单的求解思路就是BFS,但是BFS只适用于处理无权图的最短路径。
所谓无权图,即图中各顶点之间的边没有权重,或者可以理解为各相连顶点之间距离相同。
对于有权图的最短路径求解,有多种解题思路,比如Dijkstra,Floyed,Bellma-ford,SPFA。
本题将使用SPFA算法来求解最短路径。
所谓SPFA算法,其实就是对无权图的BFS算法的优化。
- 在无权图的BFS扩散过程中,最先碰到终点的路径 一定是 最短路径,因为这条路径从起点到终点经历的节点数最少,而无权图中,相连节点之间的距离是相同的,因此路径中节点数越少,距离就越短。
- 在有权图中的BFS扩散过程中,最先碰到终点的路径 不一定是 最短路径,此时各节点之间的距离是不同的,因此节点数少,不能代表路径就短。
关于SPFA算法可以看下这个视频讲解: