如果题目中遇到两条最短距离一样的最短路径,那么这个时候会再给出一个第二标尺(第一标尺是距离)。
-
给每条边再加一个边权(比如花费),要求在最短路径有多条时要求路径上的花费之和最小。
加了边权的Dijkstra -
给每个点增加一个点权(比如每个城市能收集到的物资),然后在最短路径有多条时要求路径上的点权之和最大。
加了点权的Dijkstra -
直接求出有多少条最短路径。
更通用的解法是
先在Dijkstra算法中记录所有最短路径(只考虑距离),然后从这些最短路径中选出一条第二标尺最优的路径。(因为在给定一条路径的情况下,针对这条路径的信息都可以通过边权和点权很容易计算出来!)
PAT A1030 Travel Plan[Dijkstra+DFS]