双端队列BFS实现01最短路

双端队列\(BFS\)实现\(01\)最短路

介绍

如果最短路的边权只有\(01\)两种,那么我们可以使用双端队列\(BFS\)
用双端队列\(BFS\)实现\(01\)最短路通常能比\(SPFA\)\(dijkstra\)省时。
时间复杂度:\(O(N)\)

实现方法

如果当前处理的点的边权为\(0\),那么将这个点移至队首,否则移至队尾。

证明

如果边权为\(0\),那么这条路是当前的最短路(移入队首),反之,如果边权为\(1\),那么就不是最短路(移入队尾)。
这样,我们可以维护队列的的单调性。

posted @ 2021-10-06 15:34  Andy_LJX  阅读(309)  评论(0)    收藏  举报