DijkstraAlgo.java
Wed Nov 06 2024 12:44:48 GMT+0000 (Coordinated Universal Time)
Saved by
@signup1
import java.util.*;
class Main{
static final int INF = Integer.MAX_VALUE;
int minDistance(int[] dist,Boolean[] sptSet,int V){
int min= INF ,min_index = -1;
for(int v=0;v<V;v++){
if(!sptSet[v] && dist[v] <= min){
min = dist[v];
min_index = v;
}
}
return min_index;
}
void dijkistra(int[][] graph,int src,int V){
int dist[] = new int[V];
Boolean[] sptSet = new Boolean[V];
Arrays.fill(dist,INF);
Arrays.fill(sptSet,false);
dist[src] = 0;
for(int cnt=0;cnt<V-1;cnt++){
int u= minDistance(dist,sptSet,V);
sptSet[u] = true;
for(int v=0;v<V;v++){
if(!sptSet[v]&&graph[u][v]!=0&&dist[u]!=INF && dist[u]+graph[u][v]<dist[v]){
dist[v] = dist[u] + graph[u][v];
}
}
}
printSolution(dist,V);
}
void printSolution(int[] dist,int V){
System.out.println("Vertex \t Distance fromSource");
for(int i=0;i<V;i++){
System.out.println(i+"\t"+dist[i]);
}
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("Enter the number of vertices:");
int n =sc.nextInt();
System.out.println("Enter the adjacancy matrix");
int[][] graph = new int[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
graph[i][j] = sc.nextInt();
}
}
System.out.println("Enter the source:");
int src=sc.nextInt();
Main obj = new Main();
obj.dijkistra(graph,src,n);
}
}
content_copyCOPY
Comments