Skip to content

Commit dcd2d40

Browse files
committed
Added Dijkstra in C
1 parent 86c40d6 commit dcd2d40

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
// A C++ program for Dijkstra's single source shortest path algorithm.
2+
3+
#include <stdio.h>
4+
#include <stdbool.h>
5+
#include <stdlib.h>
6+
#include <assert.h>
7+
#define N 100
8+
#define I __INT_MAX__
9+
10+
typedef long long int ll;
11+
void dijkstra(ll m[][N], ll vertex, ll source, ll e)
12+
{
13+
ll dist[N];
14+
ll min = I;
15+
ll included[N] = {0};
16+
ll n;
17+
ll counter = 0;
18+
19+
for (ll i = 1; i <= vertex; i++)
20+
{
21+
dist[i] = m[source][i];
22+
if (dist[i] < min)
23+
{
24+
min = dist[i];
25+
n = i;
26+
}
27+
}
28+
dist[source] = 0;
29+
30+
while (counter < vertex)
31+
{
32+
33+
counter++;
34+
included[source] = 1;
35+
included[n] = 1;
36+
37+
for (ll u = 1; u <= vertex; u++)
38+
{
39+
if ((dist[n] + m[n][u] < dist[u]) && (included[u] == 0))
40+
{
41+
dist[u] = dist[n] + m[n][u];
42+
}
43+
}
44+
45+
min = I;
46+
for (ll i = 1; i <= vertex; i++)
47+
{
48+
if ((dist[i] < min) && (included[i] == 0))
49+
{
50+
min = dist[i];
51+
n = i;
52+
}
53+
}
54+
}
55+
56+
for (ll i = 1; i <= vertex; i++)
57+
{
58+
if (dist[i] != I)
59+
printf("%lld ", dist[i]);
60+
else
61+
printf("inf ");
62+
}
63+
printf("\n");
64+
}
65+
int main()
66+
{
67+
ll n, e;
68+
69+
scanf("%lld %lld", &n, &e);
70+
ll weightedEdges[3][N];
71+
ll adjMatrix[N][N] = {0};
72+
for (ll i = 0; i < e; i++)
73+
{
74+
//vertex 1, vertex 2, weight
75+
scanf("%lld %lld %lld", &weightedEdges[0][i], &weightedEdges[1][i], &weightedEdges[2][i]);
76+
}
77+
78+
for (ll i = 0; i < e; i++)
79+
{
80+
ll j = weightedEdges[0][i];
81+
ll k = weightedEdges[1][i];
82+
adjMatrix[j][k] = weightedEdges[2][i];
83+
}
84+
85+
for (ll i = 1; i <= n; i++)
86+
{
87+
for (ll j = 1; j <= n; j++)
88+
{
89+
if (adjMatrix[i][j] == 0)
90+
{
91+
adjMatrix[i][j] = I;
92+
}
93+
}
94+
}
95+
}

0 commit comments

Comments
 (0)