Shortest Path
Mon Nov 18 2024 17:32:13 GMT+0000 (Coordinated Universal Time)
Saved by
@hi123
import java.util.*;
public class ShortestPath {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter number of vertices: ");
int n = sc.nextInt();
System.out.println("Enter the adjacency matrix: ");
int[][] g = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
g[i][j] = sc.nextInt();
}
}
System.out.println("Enter source vertex: ");
int v = sc.nextInt();
dijkstras(v, g, n);
}
public static void dijkstras(int v, int[][] cost, int n) {
boolean[] s = new boolean[n];
int[] dist = new int[n];
for (int i = 0; i < n; i++) {
dist[i] = cost[v][i] == 0 ? Integer.MAX_VALUE : cost[v][i];
s[i] = false;
}
s[v] = true;
dist[v] = 0;
for (int i = 1; i < n - 1; i++) {
int u = minDist(dist, s);
s[u] = true;
for (int w = 0; w < n; w++) {
if (!s[w] && cost[u][w] != 0) {
if (dist[w] > dist[u] + cost[u][w]) {
dist[w] = dist[u] + cost[u][w];
}
}
}
}
System.out.println("Shortest distances from source " + v + " :");
for (int i = 0; i < n; i++) {
System.out.println("To node " + i + " - Distance : " + dist[i]);
}
}
private static int minDist(int[] dis, boolean[] s) {
int min = Integer.MAX_VALUE, idx = -1;
for (int i = 0; i < dis.length; i++) {
if (!s[i] && dis[i] <= min) {
min = dis[i];
idx = i;
}
}
return idx;
}
}
content_copyCOPY
Comments