翻译一下,这里求的是从S这个城市到D这个城市。要求旅行的距离是最短的,这是第一尺度。然后,在旅行的距离最短的前提下,还要求尽可能的使花费最小。输入的格式是 点数,边数,起点城市,终点城市。接下来是每两个城市之间的距离和花费。输出是最短路径,最短的距离和最低的花费。
这是一个典型的最短路径问题,且权值非负,单源最短路径。所以适合Dijkstra算法。总体的框架我们确定了。又由于这个问题有点复杂,第二尺度以及输出的信息比较多。第二尺度以及输出的信息的处理可以单独列一个函数来处理,免得Dijkstra函数内部逻辑太复杂。具体请看代码,AC代码,里面有详细的注释。
#include <iostream>
#include <vector>
using namespace std;
con