Advertisement
FahimFaisal

Contest4_meetInTheMiddle

Mar 10th, 2020
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.81 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3. public class Solution{
  4.   public static int[] dj_prim(LinkedList[] ln,int src){
  5.     int v=ln.length;
  6.     int d []=new int[v];
  7.     int check[]=new int[v];
  8.     for(int i=0;i<v;i++){
  9.       d[i]=Integer.MAX_VALUE;
  10.     }
  11.     d[src]=0;
  12.     for(int i=0;i<v;i++){
  13.       int u=minVertex(d,check);
  14.       for(int j=0;j<ln[u].size();j++){
  15.         String str=ln[u].get(j).toString();
  16.         StringTokenizer st=new StringTokenizer(str,",");
  17.         int t=Integer.parseInt(st.nextToken());
  18.         int dst=Integer.parseInt(st.nextToken());
  19.         if(check[t]!=-1 && d[u]!=Integer.MAX_VALUE && d[u]+dst<d[t]){
  20.           d[t]=d[u]+dst;
  21.         }
  22.        
  23.       }
  24.     }
  25.     return d;
  26.   }
  27.   public static int minVertex(int d[],int check[]){
  28.     int min=Integer.MAX_VALUE;
  29.     int min_index=-1;
  30.     for(int i=0;i<d.length;i++){
  31.       if(check[i]!=-1 && d[i]<=min){
  32.         min=d[i];
  33.         min_index=i;
  34.       }
  35.      
  36.      
  37.     }
  38.     check[min_index]=-1;
  39.     return min_index;
  40.   }
  41.   public static void main(String[]args) {
  42.     Scanner in=new Scanner(System.in);
  43.     int v=in.nextInt();
  44.     int e=in.nextInt();
  45.     LinkedList[] ln=new LinkedList[v];
  46.     for(int i=0;i<v;i++)
  47.       ln[i]=new LinkedList<String>();
  48.     String str;
  49.     int vc=0;
  50.     String s[];
  51.     for(int i=0;i<e;i++){
  52.       int from=in.nextInt();
  53.       int to=in.nextInt();
  54.       int w=in.nextInt();
  55.       ln[from].add(to+","+w);
  56.     }
  57.   if(v==1)
  58.     System.out.println(0);
  59.   else{
  60.   int d[]=dj_prim(ln,0);
  61.   int d1[]=dj_prim(ln,v-1);
  62.   int min =Integer.MAX_VALUE;
  63.   int result=-1;
  64.   int i;
  65.   for(i=0;i<v;i++){
  66.     if(d[i]+d1[i]<min &&(d[i]<=100000 && d1[i]<=100000)){
  67.       result=i;
  68.     min=d[i]+d1[i];
  69.     }
  70.          
  71.    
  72.      
  73.   }
  74.  
  75.   System.out.println(result);
  76.   }
  77.   }
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement