Floyd
Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。
Floyd是最简单的最短路径算法,可以计算图中任意两点间的最短路径。时间复杂度为N的3次方,适用于出现负边权的情况。
for(int k = 1;k <= n;k ++)
for(int i = 1;i <= n;i ++)
for(int j = 1;j <= n;j ++)
dp[i][j] = min(dp[i][j],dp[i][k] + dp[k][j]);
//Floyd算法模板
算法步骤:枚举中间断点k,让后枚举起点,终点。如果起点到断点的距离加断点到终点的距离小于了起点到终点的距离,则说明从起点到终点的