关于floyd的简单变式应用
  • 板块学术版
  • 楼主zhangzhixu000001
  • 当前回复13
  • 已保存回复13
  • 发布时间2024/5/26 22:06
  • 上次更新2024/5/28 13:58:12
查看原帖
关于floyd的简单变式应用
1210321
zhangzhixu000001楼主2024/5/26 22:06

众所周知,floyd的代码如下:

for (int k=1;k<=n;k++)
  for (int i=1;i<=n;i++)
    for (int j=1;j<=n;j++)
      dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);

其中i和j为图上点。
那么,将j循环去掉,便可得单源最短路:

for (int k=1;k<=n;k++)
  for (int i=1;i<=n;i++)
      dis[strat][i]=min(dis[strat][i],dis[start][k]+dis[k][i]);

理论上复杂度O(N2)O(N^2),相当于dij不加堆优化,但是其实这个floyd改没啥实用性......(空间复杂度O(N2)O(N^2),其他两种空间都只有O(M)O(M))

2024/5/26 22:06
加载中...