AcWing:176. 装满的油箱(bfs + dijiskla思想)
2021-02-08 02:17
标签:bsp 并且 无法 思路 using view 那是 back 入队 有N个城市(编号0、1…N-1)和M条道路,构成一张无向图。 在每个城市里边都有一个加油站,不同的加油站的单位油价不一样。 现在你需要回答不超过100个问题,在每个问题中,请计算出一架油箱容量为C的车子,从起点城市S开到终点城市E至少要花多少油钱? 第一行包含两个整数N和M。 第二行包含N个整数,代表N个城市的单位油价,第i个数即为第i个城市的油价pipi。 接下来M行,每行包括三个整数u,v,d,表示城市u与城市v之间存在道路,且车子从u到v需要消耗的油量为d。 接下来一行包含一个整数q,代表问题数量。 接下来q行,每行包含三个整数C、S、E,分别表示车子油箱容量、起点城市S、终点城市E。 对于每个问题,输出一个整数,表示所需的最少油钱。 如果无法从起点城市开到终点城市,则输出”impossible”。 每个结果占一行。 1≤N≤10001≤N≤1000, 算法:bfs + dijiskla思想 题解:这题是用bfs + 优先队列来做,而且需要用到dijiskla的思想,那么我们可以用枚举法来做,首先从起点出发,先加一升油试一下,加一升油能到达的站点放入队列,因为队列是以花费钱来从小到大排序,所以我在把这个加了一升油的情况放入队列,如果这个加了一升油的情况还是花费最小的话,我就会继续加第二升油,如果不是的话,那么我就会用到其他的。到最后的时候,可能最开始第一个点的加一升油还没有用到,那是因为它并不是最优解,你思考一下,多加一升油的性价比就不高了,你还会去多加n升油吗,所以之后的解就都不是我们要找的最优解,之后就是重复我最开始所说的加一升油试一试这个思路。如果还是不够理解的话,可以看代码,代码上也有解释哟! AcWing:176. 装满的油箱(bfs + dijiskla思想) 标签:bsp 并且 无法 思路 using view 那是 back 入队 原文地址:https://www.cnblogs.com/buhuiflydepig/p/11367487.html输入格式
输出格式
数据范围
1≤M≤100001≤M≤10000,
1≤pi≤1001≤pi≤100,
1≤d≤1001≤d≤100,
1≤C≤1001≤C≤100输入样例:
5 5
10 10 20 12 13
0 1 9
0 2 8
1 2 1
1 3 11
2 3 7
2
10 0 3
20 1 4
输出样例:
170
impossible
#include
上一篇:c# 深入理解事件1.0
下一篇:c# 深入理解事件2.0
文章标题:AcWing:176. 装满的油箱(bfs + dijiskla思想)
文章链接:http://soscw.com/index.php/essay/52444.html