1
+ #include <stdio.h>
2
+ #define INFINITY 9999
3
+ #define MAX 10
4
+
5
+ void Dijkstra (int Graph [MAX ][MAX ], int n , int start );
6
+
7
+ void Dijkstra (int Graph [MAX ][MAX ], int n , int start ) {
8
+ int cost [MAX ][MAX ], distance [MAX ], pred [MAX ];
9
+ int visited [MAX ], count , mindistance , nextnode , i , j ;
10
+
11
+ // Creating cost matrix
12
+ for (i = 0 ; i < n ; i ++ )
13
+ for (j = 0 ; j < n ; j ++ )
14
+ if (Graph [i ][j ] == 0 )
15
+ cost [i ][j ] = INFINITY ;
16
+ else
17
+ cost [i ][j ] = Graph [i ][j ];
18
+
19
+ for (i = 0 ; i < n ; i ++ ) {
20
+ distance [i ] = cost [start ][i ];
21
+ pred [i ] = start ;
22
+ visited [i ] = 0 ;
23
+ }
24
+
25
+ distance [start ] = 0 ;
26
+ visited [start ] = 1 ;
27
+ count = 1 ;
28
+
29
+ while (count < n - 1 ) {
30
+ mindistance = INFINITY ;
31
+
32
+ for (i = 0 ; i < n ; i ++ )
33
+ if (distance [i ] < mindistance && !visited [i ]) {
34
+ mindistance = distance [i ];
35
+ nextnode = i ;
36
+ }
37
+
38
+ visited [nextnode ] = 1 ;
39
+ for (i = 0 ; i < n ; i ++ )
40
+ if (!visited [i ])
41
+ if (mindistance + cost [nextnode ][i ] < distance [i ]) {
42
+ distance [i ] = mindistance + cost [nextnode ][i ];
43
+ pred [i ] = nextnode ;
44
+ }
45
+ count ++ ;
46
+ }
47
+
48
+ // Printing the distance
49
+ for (i = 0 ; i < n ; i ++ )
50
+ if (i != start ) {
51
+ printf ("\nDistance from source to %d: %d" , i , distance [i ]);
52
+ }
53
+ }
54
+ int main () {
55
+ int Graph [MAX ][MAX ], i , j , n , u ;
56
+ n = 7 ;
57
+
58
+ Graph [0 ][0 ] = 0 ;
59
+ Graph [0 ][1 ] = 0 ;
60
+ Graph [0 ][2 ] = 1 ;
61
+ Graph [0 ][3 ] = 2 ;
62
+ Graph [0 ][4 ] = 0 ;
63
+ Graph [0 ][5 ] = 0 ;
64
+ Graph [0 ][6 ] = 0 ;
65
+
66
+ Graph [1 ][0 ] = 0 ;
67
+ Graph [1 ][1 ] = 0 ;
68
+ Graph [1 ][2 ] = 2 ;
69
+ Graph [1 ][3 ] = 0 ;
70
+ Graph [1 ][4 ] = 0 ;
71
+ Graph [1 ][5 ] = 3 ;
72
+ Graph [1 ][6 ] = 0 ;
73
+
74
+ Graph [2 ][0 ] = 1 ;
75
+ Graph [2 ][1 ] = 2 ;
76
+ Graph [2 ][2 ] = 0 ;
77
+ Graph [2 ][3 ] = 1 ;
78
+ Graph [2 ][4 ] = 3 ;
79
+ Graph [2 ][5 ] = 0 ;
80
+ Graph [2 ][6 ] = 0 ;
81
+
82
+ Graph [3 ][0 ] = 2 ;
83
+ Graph [3 ][1 ] = 0 ;
84
+ Graph [3 ][2 ] = 1 ;
85
+ Graph [3 ][3 ] = 0 ;
86
+ Graph [3 ][4 ] = 0 ;
87
+ Graph [3 ][5 ] = 0 ;
88
+ Graph [3 ][6 ] = 1 ;
89
+
90
+ Graph [4 ][0 ] = 0 ;
91
+ Graph [4 ][1 ] = 0 ;
92
+ Graph [4 ][2 ] = 3 ;
93
+ Graph [4 ][3 ] = 0 ;
94
+ Graph [4 ][4 ] = 0 ;
95
+ Graph [4 ][5 ] = 2 ;
96
+ Graph [4 ][6 ] = 0 ;
97
+
98
+ Graph [5 ][0 ] = 0 ;
99
+ Graph [5 ][1 ] = 3 ;
100
+ Graph [5 ][2 ] = 0 ;
101
+ Graph [5 ][3 ] = 0 ;
102
+ Graph [5 ][4 ] = 2 ;
103
+ Graph [5 ][5 ] = 0 ;
104
+ Graph [5 ][6 ] = 1 ;
105
+
106
+ Graph [6 ][0 ] = 0 ;
107
+ Graph [6 ][1 ] = 0 ;
108
+ Graph [6 ][2 ] = 0 ;
109
+ Graph [6 ][3 ] = 1 ;
110
+ Graph [6 ][4 ] = 0 ;
111
+ Graph [6 ][5 ] = 1 ;
112
+ Graph [6 ][6 ] = 0 ;
113
+
114
+ u = 0 ;
115
+ Dijkstra (Graph , n , u );
116
+
117
+ return 0 ;
118
+ }
0 commit comments