本题求从城市 1 到城市 n 在预算 w 内的最小花费路线。由于每条路线的费用 cost≥1(均为正数),这是一个单源最短路径问题,使用 Dijkstra 算法即可。
核心观察:在所有从 1 到 n 的路线中,「花费最少」的那条就是最短路径。因此:
四年校园时光即将结束,小明和室友计划一次难忘的毕业旅行。他们准备从 A 城市出发,前往他们已经久仰的 B 城市。两座城市之间有多种出行方案,既可直达,也可途经其他城市中转,每条路线的费用不相同。
请帮助他们在预算 w 内,找到花费最少的路线。
前有三个整数 n,m,w:
接下来是一个二维数组,记录了所有的路线信息。每条路线有 3 个整数 u,v,cost:
输入
3,3,10,[[1,2,5],[2,3,5],[1,3,8]]
输出
8
说明
解释:从城市 1 到城市 3,直达花费 8。在预算内最优。
中转途经城市 2: 5+5=10,费用更高。
输入
4,4,20,[[1,2,5],[2,3,5],[3,4,5],[1,4,25]]
输出
15
说明
解释:直达 25 超出预算。
路径: 1→2→3→4 花费 15。
为最小可行方案。
输入
3,3,5,[[1,2,3],[2,3,3],[1,3,10]]
输出
-1
说明
解释:所有可行路径都超过预算 5,返回 −1 表示无解。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册