最短路的一些总结
spfa
- 有负边时使用
- 复杂度可以被卡到nm(坑:怎么卡?)
- 判负环(一个点入队了n次)
djkstra
- 每次走最短的路
- 有负边时不能使用
- 每次出队一个点(logn),更新点的所有边,每条边都可能导致一次优先队列的操作,所以是mlogn的复杂度
- 当图是一个完全图,就变成了n^2logn,那就不如暴力找当前最小,这样就是n^2+m的复杂度
- 没有负边求最短路不要作死用spfa。。。
k短路问题
次短路
- 例:求1~n的次短路
- 可以证明次短路上只有一条边不是最短边(最短边:最短路上的边)
- 预处理d[x](1到x的最短距离)g[x](x到n的最短距离),枚举那一条非最短边,u-v,该路为 d[u]+w[u,v]+g[v]