floyd算法
原理:动态规划问题,核心思想就是从i到j的最短路问题,但是如果存在k,使得i->k->j的距离小于i->j的距离就更新dp[i][j]值
先建立一个二维数组dp[][],用来存放i->j的距离(如果dis(i,j)<0,这个算法便不能使用了)
时间复杂度O(n^3) 空间复杂度O(n^2)
核心代码:
for(int k=0;k<n;k++)
for(int i=0;i<n;i++)
for(int j=0;i<n;j++)
dp[i][j]=min(dp[[i][j],dp[i][k]+dp[k][j]);