본문 바로가기
Computer Science

Dijkstra

by OKOK 2019. 1. 16.

1. 탐욕 알고리즘

2. 로직 알기

3. 이해 해두고,

4. 코드 방향 조금씩 다름

5. 오케이 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <stdio.h>
 
#define N 10
#define INF 100000
 
int map[N + 1][N + 1];
int visit[N + 1];
int dist[N + 1];
int vertex;
int edge;
int start;
int end;
 
void dijkstra(void)
{
    int i;
    int j;
    int min;
    int v;
 
    dist[start] = 0;
 
    for (i = 1; i <= vertex; i++)
    {
        min = INF;
 
        for (j = 1; j <= vertex; j++)
        {
            if (visit[j] == 0 && min > dist[j])
            {
                min = dist[j];
                v = j;
            }
        }
 
        visit[v] = 1;
 
        for (j = 1; j <= vertex; j++)
        {
            if (dist[j] > dist[v] + map[v][j])
            {
                dist[j] = dist[v] + map[v][j];
            }
        }
    }
}
 
int main(void)
{
    freopen("input.txt""r", stdin);
    int test_case;
    int T;
    int i;
    int j;
    int from;
    int to;
    int value;
 
    scanf("%d"&T);
 
    for (test_case = 1; test_case <= T; test_case++)
    {
        scanf("%d %d %d"&vertex, &start, &end);
        scanf("%d"&edge);
 
        for (i = 1; i <= vertex; i++)
        {
            for (j = 1; j <= vertex; j++)
            {
                if (i != j)
                {
                    map[i][j] = INF;
                }
            }
        }
 
        for (i = 1; i <= edge; i++)
        {
            scanf("%d %d %d"&from, &to, &value);
            map[from][to] = value;
        }
 
        for (i = 1; i <= vertex; i++)
        {
            dist[i] = INF;
            visit[i] = 0;
        }
 
        printf("#%d ", test_case);
        dijkstra();
        printf("%d \n", dist[end]);
    }
    return 0;
}
cs

 


'Computer Science' 카테고리의 다른 글

프유용 동적할당 대신 배열  (0) 2019.01.16
Minimum Spanning Tree  (0) 2019.01.16
BFS Algo  (0) 2019.01.16
DFS Algo  (0) 2019.01.16
Permutation & Combination  (0) 2019.01.16

댓글