用Floyd Warshall算法求图中任意两顶点之间的最短距离。
设为顶点到的边的距离,二维数组表示从顶点到顶点的最短距离。
初始时,任意顶点到自己的距离为0(即),到其他顶点的距离为无穷大;
对于图中任意两顶点,遍历图中的所有其他顶点,尝试进行松弛操作。若存在顶点满足:
则更新之间的最短距离:
遍历任意两顶点,更新最短距离,最终可得图中任意两顶点间的最短距离。该算法时间复杂度为。
FloydWarshall.h
FloydWarshall.cpp
FloydWarshallTest.cpp