借用这篇解释。
算法原理
从任意顶点 i 到任意顶点 j 的最短路径不外乎两种可能
① 直接从 i 到 j
② 从 i 经过若干个顶点到 j
假设 dist(i,j) 为顶点 i 到顶点 j 的最短路径的距离
对于每一个顶点 k,检查 dist(i,k) + dist(k,j)<dist(i,j) 是否成立
如果成立,证明从 i 到 k 再到 j 的路径比 i 直接到 j 的路径短,设置 dist(i,j) = dist(i,k) + dist(k,j)
当我们遍历完所有结点 k,dist(i,j) 中记录的便是 i 到 j 的最短路径的距离https://www.acwing.com/solution/content/34182/