1+ package graphs ;
2+ import java .util .*;
3+
4+ // Problem Title => Dijkstra's Algorithm (Find Shortest Path)
5+ public class Graph_Problem_12 {
6+ // finding vertex with min distance,
7+ // from set of non-included vertices in the shortest path tree
8+ int minDistance (int [] dist , boolean [] sptSet , int V ){
9+ // Initializing the min value
10+ int min = Integer .MAX_VALUE , min_index = -1 ;
11+ for (int v = 0 ; v < V ; v ++){
12+ if (!sptSet [v ] && dist [v ] <= min ){
13+ min = dist [v ];
14+ min_index = v ;
15+ }
16+ }
17+ return min_index ;
18+ }
19+
20+ void printSolution (int [] dist , int V ){
21+ System .out .println ("Vertex \t \t Distance from Source" );
22+ for (int i = 0 ; i < V ; i ++)
23+ System .out .println (i + " \t \t " + dist [i ]);
24+ }
25+
26+ void dijskstra (int [][] graph , int V ){
27+ int [] dist = new int [V ];
28+ boolean [] sptSet = new boolean [V ];
29+
30+ for (int i = 0 ; i < V ; i ++){
31+ dist [i ] = Integer .MAX_VALUE ;
32+ sptSet [i ] = false ;
33+ }
34+
35+ dist [0 ] = 0 ;
36+
37+ for (int count = 0 ; count < V -1 ; count ++){
38+ int u = minDistance (dist , sptSet , V );
39+
40+ sptSet [u ] = true ;
41+
42+ for (int v = 0 ; v < V ; v ++){
43+ if (!sptSet [v ] && graph [u ][v ] != 0 && dist [u ] != Integer .MAX_VALUE && dist [u ] + graph [u ][v ] < dist [v ])
44+ dist [v ] = dist [u ] + graph [u ][v ];
45+ }
46+
47+ printSolution (dist , V );
48+ }
49+ }
50+
51+ public static void main (String [] args ) {
52+ Scanner sc = new Scanner (System .in );
53+ int V = sc .nextInt ();
54+
55+
56+ int [][] graph = new int [][]{
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+ Graph_Problem_12 t = new Graph_Problem_12 ();
68+ t .dijskstra (graph , V );
69+ }
70+ }
0 commit comments