求任意两点间的最短路径Flord-Warshall算法:
适用范围: 求解任意两点间的最短路径, 可以处理边是负值的情况,判断图中是否存在负圈。只需判断是否存在d[i][i]是负数的顶点i就可以了
复杂度: O(|V^3|)
Code:
int d[maxn][maxn];//d[i][i] = 0; 其余初始化为INF
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]);
}