Roadblocks

image

解析

对于求次短路的问题,可以先回顾求序列中次大值的问题解法。

求序列中次大值,即先给最大值打擂台,如果原来的最大值给挤下去了,考虑原最大值是否可以更新次大值。如果没给挤下去,正常打擂台更新次大值。

这题的思路也一样。使用堆优化的 Dijkstra,从堆顶弹出元素时加入相邻元素,如果把最短路比下去了就更新最短路数组,把次短路设为原最短路。

更新次短路时,要注意次短路不能抢最短路的关键路径,需要加上判断 d[v]<dis+z。除此之外,正常更新次短路即可。

代码


All Rights Reserved 2022 Wang Zhanrui