97313 - 旅行(travel)

题目背景

小气鬼准备乘飞机去旅游。所有的航空公司联合推出了一款优惠活动,如果一张机票包含多段行程,则可以优惠掉最贵的那段行程。比如说一张机票从A市先飞到B市,这段行程原价花费100元,再从B市飞到C市,这段行程原价花费100元,再从C市飞到D市,这段行程原价花费300元。如果按照这组行程购买一张票,那么可以优惠掉最贵的300元,只需要花费200元。如果是直飞的行程,不经停其他城市,则不提供优惠。当然,一组行程必须连续,上一段行程的抵达城市必须是下一段行程的起始城市。

小气鬼不是很在意反复进入机场、等待航班花费的时间、购买票的张数等等,他只关心花的钱数。他可以经停任意多个城市、也可以把总行程拆分成多组分次购票,只为花费尽可能少的钱到达目标城市。

题目描述

有n个城市,编号为1~n,小气鬼目前在1号城市,计划到n号城市去旅游。航空公司提供了m个航班,其中第i个航班是从$u{i}市出发,停留在v{i}市,售价(原价)w_{i}$元。

求小气鬼的最小花费。保证从1号城市出发至少存在一条路线可以到达n号城市。

输入

输入的第一行包含两个数字n,m。

接下来m行,每行包含3个数字$u{i}、v{i}、w_{i},分别表示第i$个航班的起始城市、到达城市、售价。

输出

输出仅一个数字,是小气鬼的最小花费。

样例

输入

3 3
1 2 10
1 3 15
2 3 10

输出

10

输入

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

输出

20

提示

样例1解释

从城市1移动到城市3有两种不同的方案:

1->2->3。有两段行程,均花费10元,可以优惠掉其中一段,总花费为10元。

1->3。因为路线只包含一段行程,无法优惠,总花费为15元。

小气鬼选择第一种方案花费最少。

样例2解释

城市1到城市5的路线只有一条:1->2->3->4->5。小气鬼的最优方案是分两段购票,1->2->3购买一张票;3->4->5购买一张票,这两张票均是包含100元和10元的两段行程,各自优惠掉最贵的那段,总共只需要花费20元。

数据范围

对于所有测试数据有:1\leq n\leq {5\times 10}^{4},1\leq m\leq {2\times 10}^{5},$1\leq u{i},v{i}\leq n, u{i}\neq v{i}, 1\leq w{i}\leq {10}^{9}。保证从1号城市出发至少存在一条路线可以到达n号城市。 |测试点| n≤| m≤| 特殊性质| |-----|-----|-----|-----| |1~2| 10| {10}^{2}| 无| |3~4| 20| {10}^{2}| 无| |5| {10}^{2}| {10}^{3}| u{i}\lt v{i}且w{i}=1| |6~7| {10}^{2}| {10}^{3}| u{i}=v{i}-1| |8~10| {10}^{2}| {10}^{3}| 无| |11~12| {10}^{3}| {10}^{4}| w{i}=1| |13~14| {10}^{3}| {10}^{4}| u{i}=v{i}-1| |15~17|  {10}^{3}| {10}^{4}| 无| |18~19|  {10}^{4}| {10}^{5}| u{i}\lt v{i}| |20| {5\times 10}^{4}| {2\times 10}^{5}| w{i}=1| |21| {5\times 10}^{4}| {2\times 10}^{5}| u{i}=v{i}-1| |22~25| {5\times 10}^{4}| {2\times 10}^{5}$| 无|

来源

2026第五届青少年编程挑战精英赛

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题