7-9 旅游规划 (25 分)
原题链接:https://pintia.cn/problem-sets/15/problems/717
这道题目主要考察的就是Dijkstra算法。
只是在他的基础上有一点变形,原来只是有一个边权,但是现在有两个,一个是路径的长度,另一个是花费。
所以只需要把Dijkstra算法中更新路径长度的地方再加上关于花费的更新就行了。
代码:
#include <iostream>
using namespace std;
const int MAX = 520;
const int INFO = 100000;
int N,M,S,D;
int G[MAX][MAX]; //长度
int F[MAX][MAX]; //费用
int Dist[MAX]; //最短路径
int Val[MAX]; //花费
int book[MAX];
void Dijkstra(){
int min,k;
book[S] = 1;
while(1){
min = INFO;
for(int i=0;i<N;i++){