《挑战程序设计竞赛》,初级篇–图
// Floyd-Warshall O(V*V*V)
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define maxv 101
#define maxe 101
#define INF 9999
int d[maxv][maxv];
int V;
void init()
{
for(int i = 0; i < V; i++)
for(int j = 0; i < V; i++)
d[i][j] = INF;
for(int i = 0; i < V; i++)
d[i][i] = 0;
d[0][1] = 1; d[0][2] = 3;
d[1][2] = 4; d[2][3] = 2;
}
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]);
}