IT

벨맨포드

kio467 2014. 6. 9. 11:18

#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);

}