出题人: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