#include "stdafx.h"
//Floyd-Warshall算法
//可爱的Floyd算法虽然时间复杂度大了点,到了O(N^3)但对于日益增长的CPU来说又算得了什么呢,
//这么简洁的代码,真是太好记了就三个for循环而已.比起Prim kruskal来说真是天堂.
void main()
{
const size_t MaxVertex = 5;
const size_t MX = INT_MAX;
size_t MatrixG[MaxVertex][MaxVertex] =
{
0, 5, 2, 6, MX,
5, 0, MX, MX, 9,
2, MX, 0, 1, 3,
6, MX, 1, 0, MX,
MX, 9, 3, MX, 0
};
size_t Distance[MaxVertex][MaxVertex];
for(size_t i=0;i<MaxVertex;i++)
for(size_t j=0;j<MaxVertex;j++)
Distance[i][j] = MatrixG[i][j];
for(size_t k=0;k<MaxVertex;k++)
for(size_t i=0;i<MaxVertex;i++)
for(size_t j=0;j<MaxVertex;j++)
if(Distance[i][j] > MatrixG[i][k]+MatrixG[k][j])
Distance[i][j] = MatrixG[i][k]+MatrixG[k][j];
for(size_t i=0;i<MaxVertex;i++)
for(size_t j=0;j<MaxVertex;j++)
printf("Shortest distance between <%d,%d>: %d /n",i,j,Distance[i][j]);
getchar();
getchar();
}