最短路的一些总结

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]
posted @ 2020-01-27 10:33  连昵称都不能重复  阅读(114)  评论(0编辑  收藏  举报