File tree Expand file tree Collapse file tree 2 files changed +70
-0
lines changed
ClassicalAlgos/dijkstra's algo Expand file tree Collapse file tree 2 files changed +70
-0
lines changed Original file line number Diff line number Diff line change
1
+ // A C++ program for Dijkstra's single source shortest path algorithm.
2
+ // The program is for adjacency matrix representation of the graph
3
+
4
+ #include < limits.h>
5
+ #include < stdlib.h>
6
+ #include < stdio.h>
7
+ #define V 9
8
+
9
+ int min_dist (int dist[], bool sptSet[])
10
+ {
11
+ int min = INT_MAX, min_index;
12
+
13
+ for (int v = 0 ; v < V; v++)
14
+ if (sptSet[v] == false && dist[v] <= min)
15
+ min = dist[v], min_index = v;
16
+
17
+ return min_index;
18
+ }
19
+
20
+ void solution (int dist[])
21
+ {
22
+ printf (" Vertex \t\t Distance from Source\n " );
23
+ for (int i = 0 ; i < V; i++)
24
+ printf (" %d \t\t %d\n " , i, dist[i]);
25
+ }
26
+
27
+ void dijkstra (int graph[V][V], int src)
28
+ {
29
+ int dist[V];
30
+
31
+ bool sptSet[V];
32
+ for (int i = 0 ; i < V; i++)
33
+ dist[i] = INT_MAX, sptSet[i] = false ;
34
+
35
+
36
+ dist[src] = 0 ;
37
+
38
+
39
+ for (int count = 0 ; count < V - 1 ; count++) {
40
+ int u = min_dist (dist, sptSet);
41
+
42
+ sptSet[u] = true ;
43
+
44
+ for (int v = 0 ; v < V; v++)
45
+
46
+ if (!sptSet[v] && graph[u][v] && dist[u] != INT_MAX
47
+ && dist[u] + graph[u][v] < dist[v])
48
+ dist[v] = dist[u] + graph[u][v];
49
+ }
50
+
51
+ solution (dist);
52
+ }
53
+
54
+ int main ()
55
+ {
56
+ int graph[V][V];
57
+
58
+ for (int i = 0 ; i < V; i++)
59
+ {
60
+ for (int j = 0 ; j < V; j++)
61
+ {
62
+ graph[i][j]=rand ()%9 ;
63
+ }
64
+
65
+ }
66
+
67
+ dijkstra (graph, 0 );
68
+
69
+ return 0 ;
70
+ }
You can’t perform that action at this time.
0 commit comments