L3-1 森森旅游 (30 分)

出题人:DAI, Longao
单位:杭州百腾教育科技有限公司
好久没出去旅游啦!森森决定去 Z 省旅游一下。
Z 省有 n 座城市(从 1 到 n 编号)以及 m 条连接两座城市的有向旅行线路
在这里插入图片描述

输入格式

在这里插入图片描述

输出格式

对每一次汇率调整,在对应的一行中输出调整后森森至少需要准备多少现金,才能按他的计划从 1 号城市旅行到 n 号城市。

再次提醒:如果森森决定在途中的某个城市兑换旅游金,那么他必须将剩余现金全部、一次性兑换,剩下的旅途将完全使用旅游金支付。

输入样例

6 11 3
1 2 3 5
1 3 8 4
2 4 4 6
3 1 8 6
1 3 10 8
2 3 2 8
3 4 5 3
3 5 10 7
3 3 2 3
4 6 10 12
5 6 10 6
3 4 5 2 5 100
1 2
2 1
1 17

输出样例

8
8
1

思路

借鉴大佬的思路,这题和超级玛丽那题有点点类似,都要通过反向从终点求到各点的最短路径来解题,即调用求最短路径的函数。这题是先求起点到各点最小金钱花费,再求各点到终点的最小代币花费,遍历各个中间点(金钱换代币的城市),计算出总的最小金钱,将之放入set容器里自动排序。每次更新汇率时删除对应的迭代器,再把更换汇率之后计算出来的结果放入set容器中,最后输出即可。下放代码:

#include <bits/stdc++.h>
#define ll long long
#define INF 0x3f3f3f3f3f3f3f3f
using namespace std;

typedef pair<ll, ll> P
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值