Advertisement
FahimFaisal

Contest3_corona

Mar 10th, 2020
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.00 KB | None | 0 0
  1. import java.io.File;
  2. import java.io.FileNotFoundException;
  3. import java.io.IOException;
  4. import java.util.Scanner;
  5.  
  6. public class C {
  7.     public static void main(String[] args) throws FileNotFoundException, IOException {
  8.         Scanner sc = new Scanner(System.in);
  9.         int v = sc.nextInt() ;
  10.         int e = sc.nextInt();
  11.  
  12.         int matrix [][] = new int [v][v] ;
  13.         if(e < (int)Math.pow(10,5)) {
  14.             for (int i = 0; i < e; i++) {
  15.                 int v1 = sc.nextInt();
  16.                 int v2 = sc.nextInt();
  17.                 int weight = sc.nextInt();
  18.                 matrix[v1][v2] = weight;
  19.             }
  20.         }
  21.         dijkstra(matrix);
  22.     }
  23.  
  24.     private static void dijkstra(int[][] matrix) {
  25.         int v = matrix.length;
  26.         boolean visited [] = new boolean[v];
  27.         int distance [] = new int[v];
  28.         distance[0] = 0 ;
  29.  
  30.         for (int i = 1; i < distance.length ; i++)
  31.             distance[i] = Integer.MAX_VALUE;
  32.  
  33.         for (int i = 0; i < v-1 ; i++) {
  34.             //find vertex with minimum distance
  35.             int minVertex =  findMinVertex(distance,visited);
  36.             visited[minVertex] = true ;
  37.             //explore neighbours
  38.             for (int j = 0; j < v ; j++) {
  39.                 if(matrix[minVertex][j] != 0 && !visited[j] ){
  40.                     int newDistance =  distance[minVertex] + matrix[minVertex][j] ;
  41.                     if(newDistance < distance[j]){
  42.                         distance[j] = newDistance ;
  43.                     }
  44.                 }
  45.             }
  46.         }
  47.  
  48.         for (int i = 1; i <v ; i++) {
  49.             System.out.println(distance[i]);
  50.         }
  51.  
  52.  
  53.     }
  54.  
  55.     private static int findMinVertex(int[] distance, boolean[] visited) {
  56.         int minVertex = -1 ;
  57.         for (int i = 0; i <distance.length ; i++) {
  58.             if(!visited[i] && (minVertex == -1 || distance [i] < distance [minVertex]) ){
  59.                 minVertex = i ;
  60.             }
  61.         }
  62.         return minVertex ;
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement