Skip to content

Commit 01be366

Browse files
authored
Merge pull request #105 from onemriganka/adding-Dijkstra's_Shortest_Path_Algorithm
added Dijkstra's Shortest Path Algorithm
2 parents e0adbd2 + 2360f6b commit 01be366

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
import java.util.*;
2+
3+
class DijkstraAlgorithm {
4+
private static final int INF = Integer.MAX_VALUE;
5+
6+
public static void dijkstra(int[][] graph, int source) {
7+
int vertices = graph.length;
8+
int[] distance = new int[vertices];
9+
boolean[] visited = new boolean[vertices];
10+
11+
for (int i = 0; i < vertices; i++) {
12+
distance[i] = INF;
13+
visited[i] = false;
14+
}
15+
16+
distance[source] = 0;
17+
18+
for (int i = 0; i < vertices - 1; i++) {
19+
int minDistance = findMinDistance(distance, visited);
20+
visited[minDistance] = true;
21+
22+
for (int j = 0; j < vertices; j++) {
23+
if (!visited[j] && graph[minDistance][j] != 0 && distance[minDistance] != INF
24+
&& distance[minDistance] + graph[minDistance][j] < distance[j]) {
25+
distance[j] = distance[minDistance] + graph[minDistance][j];
26+
}
27+
}
28+
}
29+
30+
printShortestPaths(distance);
31+
}
32+
33+
private static int findMinDistance(int[] distance, boolean[] visited) {
34+
int minDistance = INF;
35+
int minIndex = -1;
36+
int vertices = distance.length;
37+
38+
for (int i = 0; i < vertices; i++) {
39+
if (!visited[i] && distance[i] < minDistance) {
40+
minDistance = distance[i];
41+
minIndex = i;
42+
}
43+
}
44+
return minIndex;
45+
}
46+
47+
private static void printShortestPaths(int[] distance) {
48+
int vertices = distance.length;
49+
System.out.println("Vertex \t Shortest Distance from Source");
50+
for (int i = 0; i < vertices; i++) {
51+
System.out.println(i + " \t " + distance[i]);
52+
}
53+
}
54+
55+
public static void main(String[] args) {
56+
int[][] graph = {
57+
{0, 4, 0, 0, 0, 0, 0, 8, 0},
58+
{4, 0, 8, 0, 0, 0, 0, 11, 0},
59+
{0, 8, 0, 7, 0, 4, 0, 0, 2},
60+
{0, 0, 7, 0, 9, 14, 0, 0, 0},
61+
{0, 0, 0, 9, 0, 10, 0, 0, 0},
62+
{0, 0, 4, 14, 10, 0, 2, 0, 0},
63+
{0, 0, 0, 0, 0, 2, 0, 1, 6},
64+
{8, 11, 0, 0, 0, 0, 1, 0, 7},
65+
{0, 0, 2, 0, 0, 0, 6, 7, 0}
66+
};
67+
68+
dijkstra(graph, 0);
69+
}
70+
}

0 commit comments

Comments
 (0)