#include <stdio.h>
#include <stdlib.h>
#define N 6
#define INF 9999
int flag[N + 1];
int dist[N + 1];
int i, j, min, position;
int data[N + 1][N + 1] = {
{0, 0, 0, 0, 0, 0, 0},
{0, 0, 2,INF, 3,INF,INF},
{0,INF, 0, 4 , 1, 7,INF},
{0,INF,INF, 0, 4, 1, 3},
{0,INF, 2, 2, 0, 1,INF},
{0,INF,INF, 1,INF, 0, 6},
{0,INF, 3,INF, 8,INF, 0}
};
void main()
{
for (i = 1; i <= N; i++) {
flag[i] = 0;
dist[i] = INF;
}
dist[1] = 0;
for (i = 1; i <= N; i++) {
min = INF;
for (j = 1; j <= N; j++) {
if (min > dist[i] && flag[j] == 0) {
min = dist[i] + data[i][j];
position = j;
}
}
flag[position] = 1;
for (j = 1; j <= N; j++) {
if (dist[j] > data[position][j] + dist[position] && data[position][j] != INF) {
dist[j] = data[position][j] + dist[position];
}
}
}
for (i = 1; i <= N; i++) {
printf("1 ~ %d : %d \n", i, dist[i]);
}
}
이코드 값이 이거고
이거에서
이대로 수정을 하고
(설정한 변수같은거 안바꾸고 가르쳐주셔야되요 ㅠ 말그대로 전과해서 뉴비에요…)
그리고
1~6까지 최단거리는 9로 출력되어있는데 1 4 3 6경로의 가중치의합은 8인데 결과가 9로 출력된 이유가궁금하네요 ㅠ 다시8로 올바르게 출력되도록 하는 코드가 있을까요