Skip to content

Commit fb61c35

Browse files
authored
Merge pull request deutranium#81 from SubhayanDas08/master
Added dijkstra.cpp
2 parents 7ec3108 + afdd822 commit fb61c35

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
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+
}
45.6 KB
Binary file not shown.

0 commit comments

Comments
 (0)