双端队列BFS实现01最短路
双端队列\(BFS\)实现\(01\)最短路
介绍
如果最短路的边权只有\(01\)两种,那么我们可以使用双端队列\(BFS\)。
用双端队列\(BFS\)实现\(01\)最短路通常能比\(SPFA\)和\(dijkstra\)省时。
时间复杂度:\(O(N)\)。
实现方法
如果当前处理的点的边权为\(0\),那么将这个点移至队首,否则移至队尾。
证明
如果边权为\(0\),那么这条路是当前的最短路(移入队首),反之,如果边权为\(1\),那么就不是最短路(移入队尾)。
这样,我们可以维护队列的的单调性。

浙公网安备 33010602011771号