Cow Hurdles poj3615

Cow Hurdles

迪杰斯特拉计算最短路径

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());

    int N = Integer.parseInt(st.nextToken());
    int M = Integer.parseInt(st.nextToken());
    int T = Integer.parseInt(st.nextToken());

    long[][] distIJ = new long[N+1][N+1];
    long maxValue = 1000000000;
    for(int i=1;i<=N;i++)
    {
        for(int j = 1;j<=N;j++){
            distIJ[i][j] = maxValue;
        }
    }
    int start;
    int end;
    int height;
    for (int i = 0; i < M; i++) {
        st = new StringTokenizer(br.readLine());
        start = Integer.parseInt(st.nextToken());
        end = Integer.parseInt(st.nextToken());
        height = Integer.parseInt(st.nextToken());
        distIJ[start][end] = height;
    }

    for(int k = 1;k<=N;k++){
        for(int i=1;i<=N;i++){
            for(int j = 1;j<=N;j++){
                if(distIJ[i][j]>Math.max(distIJ[i][k],distIJ[k][j])){
                    distIJ[i][j] = Math.max(distIJ[i][k],distIJ[k][j]);
                }
            }
        }
    }

    long result;
    int targetStart;
    int targetEnd;
    for (int i = 0; i < T; i++) {
        st = new StringTokenizer(br.readLine());
        targetStart = Integer.parseInt(st.nextToken());
        targetEnd = Integer.parseInt(st.nextToken());
        result = distIJ[targetStart][targetEnd];
        if (result == maxValue) {
            System.out.println(-1);
        } else {
            System.out.println(result);
        }
    }
}

}

posted @ 2021-04-30 16:48  Monstro  阅读(37)  评论(0)    收藏  举报