import java.util.Scanner; //Scanner Function to take in the Input Values public class Dijkstra { static Scanner scan; // scan is a Scanner Object public static void main(String[] args) { int[] preD = new int[5]; int min = 999, nextNode = 0; // min holds the minimum value, nextNode holds the value for the next node. scan = new Scanner(System.in); int[] distance = new int[5]; // the distance matrix int[][] matrix = new int[5][5]; // the actual matrix int[] visited = new int[5]; // the visited array System.out.println("Enter the cost matrix"); for (int i = 0; i < distance.length; i++) { visited[i] = 0; //initialize visited array to zeros preD[i] = 0; for (int j = 0; j < distance.length; j++) { matrix[i][j] = scan.nextInt(); //fill the matrix if (matrix[i][j]==0) matrix[i][j] = 999; // make the zeros as 999 } } distance = matrix[0]; //initialize the distance array visited[0] = 1; //set the source node as visited distance[0] = 0; //set the distance from source to source to zero which is the starting point for (int counter = 0; counter < 5; counter++) { min = 999; for (int i = 0; i < 5; i++) { if (min > distance[i] && visited[i]!=1) { min = distance[i]; nextNode = i; } } visited[nextNode] = 1; for (int i = 0; i < 5; i++) { if (visited[i]!=1) { if (min+matrix[nextNode][i] < distance[i]) { distance[i] = min+matrix[nextNode][i]; preD[i] = nextNode; } } } } for(int i = 0; i < 5; i++) System.out.print("|" + distance[i]); System.out.println("|"); int j; for (int i = 0; i < 5; i++) { if (i!=0) { System.out.print("Path = " + i); j = i; do { j = preD[j]; System.out.print(" <- " + j); } while(j != 0); } System.out.println(); } } }
Este programa es una contribución de Raj Miglani. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA