Floyd-Warshshall(未简化&数组版)

解决多元最短路径问题(每两点之间的最短路):
一次最外层循环表示借助一条边

初始化:d[i][i] = 0; 其他为INF

for(int k = 1; k <= n; k++)
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
if(d[i][j] < INF&&d[k][j] < INF)
d[i][j] = min(d[i][j], d[i][k]+d[k][j]);

//有向图无权图中,可以用1和0表示两点之间是否有通路
//预处理些许调整,初始化d为0
//主算法中只需把最后一句改为
// d[i][j] = d[i][j]||(d[i][k]&&d[k][j]);
//这样的结果称为有向图的传递闭包

你可能感兴趣的:(Floyd-Warshshall(未简化&数组版))