#include<stdio.h>
#define TRUE 1
#define FALSE 0
#define VERTICES 7
#define INF 999
int cost[VERTICES][VERTICES] ={
{0,6,5,5,INF,INF,INF},
{INF,0,INF,INF,-1,INF,INF},
{INF,-2,0,INF,1,INF,INF},
{INF,INF,-2,0,INF,-1,INF},
{INF,INF,INF,INF,0,INF,3},
{INF,INF,INF,INF,INF,0,3},
{INF,INF,INF,INF,INF,INF,0}
};
int dist[VERTICES];
int dist2[VERTICES];
int temp[VERTICES];
void BellmanFord(int n, int v)
{
int i,j,k;
for(i=0; i<n; i++)
dist[i] = cost[v][i];
for(k=2; k<n-1; k++){
for(i=0; i<n; i++){
for(j=0; j<n; j++){
if(dist[i]> dist[j] +cost[j][i])
dist[i]=dist[j] +cost[j][i];
}
printf("%-4d",dist[i]);
}
printf("\n");
}
// for(i=0; i<n; i++)
//printf("%-4d", dist[i]);
}
void main(){
BellmanFord(VERTICES, 0);
}