和 上两个算法的出发点一样。每个顶点都有可能使得另外两个顶点之间的路程变短。
d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
不断用上式递推就可以实现
d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
不断用上式递推就可以实现
int d[MAX_V][MAX_V];
int V:
void warshall-floyd()
{
for (int k = 0; k < V; k++)
for (int i = 0; i < V; i++)
for (int j = 0; j < V; j++)
d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
}