#P1191. 航班中转

    ID: 203 传统题 1000ms 128MiB 尝试: 0 已通过: 0难度: 普及+/提高− ← 上一题 下一题 → 随机一题 上传者: 标签 图论 BFS 最短路 动态规划 DP
显示设置

航班中转

题目背景

廉价航空的票价毫无规律:直飞有时贵得离谱,绕一次远路反而便宜。但旅客最在意的往往不是钱,而是少折腾。

题目描述

某国有 nn 座城市,编号 11 到 nn。城市之间有 mm 条单向航线,第 ii 条航线从城市 uiu_i 飞往城市 viv_i,票价为 cic_i。

一条从城市 11 到城市 nn 的行程由若干条航线首尾相接组成。行程的中转次数等于行程中包含的航线数减一(行程恰好只含一条航线时,中转次数为 00)。

旅客按如下次序挑选行程:

  1. 先让中转次数尽可能少;
  2. 再在所有中转次数最少的行程中,让总票价尽可能少。

请你输出最少的中转次数,以及在所有最少中转次数的行程中最小的总票价。如果城市 11 无法到达城市 nn,输出 -1。

输入格式

第一行两个整数 n,mn,m。

接下来 mm 行,每行三个整数 ui,vi,ciu_i,v_i,c_i。

输出格式

一行两个整数:最少中转次数与对应的最小总票价;若无法到达则输出 -1。

输入输出样例 #1

输入 #1

4 5
1 2 100
1 3 1
3 4 1
2 4 1
4 3 1

输出 #1

1 2

说明

样例解释

从 11 到 44 至少要中转 11 次。中转 11 次的行程有 1→2→41\to 2\to 4 与 1→3→41\to 3\to 4,票价分别为 101101 与 22,取较小者 22。

数据范围

  • 对于 100%100\% 的数据,2≤n≤2×1052\le n\le 2\times 10^5,1≤m≤5×1051\le m\le 5\times 10^5,1≤ci≤1091\le c_i\le 10^9。
  • 同一条航线可能重复给出,也可能出现 ui=viu_i=v_i 的航线。