Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Scanner;
- public class solver {
- static int n;
- static int[] known;
- static int[] shP;
- static boolean exist(String[] arr, String name){
- for(int i=0;i<arr.length;i++){
- if(arr[i].equals(name)) return true;
- }
- return false;
- }
- static void solve(int[] known, int[] shP, int[][] list,ArrayList<Integer>[] adj, int src){
- known[src] = 1;
- //shP[src] = 0;
- for(int i=0;i<adj[src].size();i++){
- int we = adj[src].get(i);
- if( shP[we] > list[src][we]){
- shP[we] = list[src][we];
- }
- }
- int min = 999999;
- int indexTemp =0;
- for(int i=0;i<shP.length;i++){
- if(shP[i]<min) {
- min = shP[i];
- indexTemp = i;
- }
- }
- solve(known, shP, list,adj, indexTemp);
- }
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- n = in.nextInt(); //nr of vertex
- known = new int[n];
- shP = new int[n];
- Edge[] edges = new Edge[n];
- for(int i=0;i<n;i++) shP[i] = (int) Double.POSITIVE_INFINITY;
- for(int i=0; i<n;i++){
- String c1 = in.next();
- String c2 = in.next();
- int w = in.nextInt();
- edges[i]= new Edge(c1, c2, w);
- }
- int cnt=0;
- String[] V = new String[n];
- for(int i=0;i<n;i++) V[i]="";
- int [][] list = new int[n][n];
- for(int i=0;i<n;i++) {
- for(int j=0;j<n;j++){
- list[i][j]= (int) Double.POSITIVE_INFINITY;
- }
- }
- ArrayList<Integer>[] adj = (ArrayList<Integer>[])new ArrayList[n];
- for(int i=0; i<n;i++){
- String c1 = edges[i].from;
- String c2 = edges[i].target;
- if(!exist(V, c1)){
- V[cnt] = c1;
- cnt++;
- }
- if(!exist(V, c2)){
- V[cnt] = c2;
- cnt++;
- }
- int indOfc1 = Arrays.asList(V).indexOf(c1);
- int indOfc2 = Arrays.asList(V).indexOf(c2);
- if(adj[indOfc1] == null) adj[indOfc1] = new ArrayList<Integer>();
- adj[indOfc1].add(indOfc2);
- list[indOfc1][indOfc2] = edges[i].weight;
- }
- String source = in.next();
- String dest = in.next();
- int indOfsrc = Arrays.asList(V).indexOf(source);
- int indOfdest = Arrays.asList(V).indexOf(dest);
- solve(known, shP, list,adj, indOfsrc);
- System.out.print(shP[indOfdest]);
- }
- }
- class Edge{
- String from;
- String target;
- int weight;
- Edge(String s, String t, int w){
- from = s;
- target = t;
- weight = w;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement