蓝桥杯(蓝桥公园vip试题)

简介: 蓝桥杯(蓝桥公园vip试题)

题目描述
小明喜欢观景,于是今天他来到了蓝桥公园。

已知公园有 N 个景点,景点和景点之间一共有 M 条道路。小明有 Q 个观景计划,每个计划包含一个起点 st 和一个终点 ed,表示他想从 st 去到 ed。但是小明的体力有限,对于每个计划他想走最少的路完成,你可以帮帮他吗?

输入描述
输入第一行包含三个正整数 N,M,Q

第 22 到 M+1 行每行包含三个正整数 u,v,w,表示 u↔v 之间存在一条距离为 w 的路。

第 M+2 到 M+Q−1 行每行包含两个正整数 st,ed,其含义如题所述。

1≤N≤400,1≤M≤N×(N−1)/2,Q≤10^3,1≤u,v,st,ed≤n,1≤w≤10^9

输出描述
输出共 Q 行,对应输入数据中的查询。

若无法从 st 到达 ed 则输出 −1。

输入输出样例
示例 1:
输入

3 3 3
1 2 1
1 3 5
2 3 2
1 2
1 3
2 3

输出
1
3
2

代码分析:

import java.util.Scanner;

public class 蓝桥公园 {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int m = sc.nextInt();
    int q = sc.nextInt();
    long max = 0x3f3f3f3f3f3f3f3fL;
    long[][] e = new long[450][450];
    for (int i = 0; i < 450; i++) {
        for (int j = 0; j < 450; j++) {
            e[i][j] = max;
        }
    }
    while (m > 0) {
        int l = sc.nextInt();
        int r = sc.nextInt();
        int v = sc.nextInt();
        e[l][r] = e[r][l] = Math.min(e[l][r], v);// 防止重复
        m--;
    }

// for (int i = 1; i <= n; i++) {
// for (int j = 1; j <= n; j++) {
// System.out.print(ei + " ");
// }
// System.out.println();
// }

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            for (int k = 1; k <= n; k++) {
                if (e[j][k] > e[j][i] + e[i][k]) {
                    e[j][k] = e[j][i] + e[i][k];
                }
            }
        }
    }
    while (q > 0) {
        int a = sc.nextInt();
        int b = sc.nextInt();
        if (e[a][b] == max) {
            System.out.println(-1);
        } else if (a == b) {
            System.out.println(0);
        } else
            System.out.println(e[a][b]);
        q--;
    }
}

}

目录
相关文章
|
1天前
|
人工智能 算法 Java
第十三届蓝桥杯B组Java(试题C:字符统计)
第十三届蓝桥杯B组Java(试题C:字符统计)
56 0
|
10月前
|
机器学习/深度学习 算法 C++
2019第十届蓝桥杯大赛青少年创意编程省赛C++组试题解析
2019第十届蓝桥杯大赛青少年创意编程省赛C++组试题解析
254 0
|
1天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-940 试题3971
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-940 试题3971
29 0
|
1天前
|
Python
第十三届蓝桥杯B组python(试题A:排列字母)
第十三届蓝桥杯B组python(试题A:排列字母)
28 0
|
1天前
|
Java
第十三届蓝桥杯B组Java(试题B:山)
第十三届蓝桥杯B组Java(试题B:山)
31 0
|
1天前
|
C++
第十三届蓝桥杯B组C++(试题C:刷题统计)
第十三届蓝桥杯B组C++(试题C:刷题统计)
22 0
|
1天前
|
C++
第十三届蓝桥杯B组C++(试题B:顺子日期)
第十三届蓝桥杯B组C++(试题B:顺子日期)
51 0
|
1天前
|
算法
蓝桥杯-试题 算法训练 数据交换
蓝桥杯-试题 算法训练 数据交换
22 0
|
1天前
蓝桥杯vip试题 报时助手
蓝桥杯vip试题 报时助手
29 0
|
1天前
|
算法
蓝桥杯vip测试题系统试题-算法提高 矩阵转置
蓝桥杯vip测试题系统试题-算法提高 矩阵转置
29 0