Skip to content

Commit e03d0b3

Browse files
New Commit
1 parent 1aaf5bf commit e03d0b3

File tree

1 file changed

+118
-0
lines changed

1 file changed

+118
-0
lines changed

Dijkstra's_algo.c

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
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

Comments
 (0)