稠密图:用邻接矩阵来存。

稀疏图:用邻接表来存。

自环:存在从自己出发又回到自己的边

重边:两个点之间存在多条边

单源最短路(要求不存在负权边)

边的值都是正数

Dijkstra算法 O(n^2) 邻接矩阵存储图

堆优化版的Dijkstra算法O(m·log(n)) 邻接表存储图

存在负权边

Bellman-Ford算法 O(nm) 用结构体来储存图

spfa 正常情况下O(m),极端情况下O(nm),用邻接表来存储图

多源最短路

Floyd算法 O(n^3) 用邻接矩阵来存储图

d[k, i, j]表示从 i 这个点只经过 1...k 这些中间点到 j 的最短距离

d[k, i, j] = d[k-1, i, k] + d[k-1, k, j]

最讨厌你,也最喜欢你