考虑一个单源最短路径问题,但是图的边权范围是1-k,k不大,那就可以用以下方法本质上在一个队列中同时最多只有k+1种不同的dis的取值,因此只需要用k+1个队列来维护即可,当前队列为空时,就循环移位找到下一个非空的队列即可复杂度为$O(nk+m)$
1 | queue<int> q[K+1]; |
考虑一个单源最短路径问题,但是图的边权范围是1-k,k不大,那就可以用以下方法本质上在一个队列中同时最多只有k+1种不同的dis的取值,因此只需要用k+1个队列来维护即可,当前队列为空时,就循环移位找到下一个非空的队列即可复杂度为$O(nk+m)$
1 | queue<int> q[K+1]; |