#include <stdio.h>
#define NumVertical 4
#define Inf 0xFFF
int Dist[NumVertical][NumVertical] = {{0,5,Inf,7},{Inf,0,4,2},{3,3,0,2},{Inf,Inf,1,0}};
int path[NumVertical][NumVertical];
int Floyd()
{
for (int index1=0;index1<NumVertical;index1++)
{
for (int index2=0;index2<NumVertical;index2++)
{
path[index1][index2]=-1;
}
}
for (int index1=0;index1<NumVertical;index1++)
{
for (int index2=0;index2<NumVertical;index2++)
{
for (int index3=0;index3<NumVertical;index3++)
{
if (Dist[index2][index3]>Dist[index2][index1]+Dist[index1][index3] )
{
Dist[index2][index3]=Dist[index2][index1]+Dist[index1][index3];
path[index2][index3]=index1;
}
}
}
}
return 0;
}
int main()
{
Floyd();
for (int index1=0;index1<NumVertical;index1++)
{
for (int index2=0;index2<NumVertical;index2++)
{
printf("\t%2d",Dist[index1][index2]);
}
printf("\n");
}
getchar();
return 0;
}