题目链接:https://www.patest.cn/contests/gplt/L2-001
题意:给出N个城市以及城市里面的救援队和M条连接城市之间的道路以及长度,要求我们求出最小长度的路线的数目,并且求出在这些路线求出一条能获得最多救援队的路线。
思路:先用dijsktra先得出起始城市到其他城市的最小长度dist,根据dist跑一遍dfs,只要长度和最小长度一样就保留当前救援队people,此时救援队人数如果最大,就保留当前路径。递归过程用栈存放路径
#include<iostream>
#include<cstring>
#include<algorithm>
#include<string>
#include<cstdio>
#include<cmath>
#define INF 0xffffff
#define MAXN 505
#include<queue>
#include<stack>
using namespace std;
int N;
int M;
int S;
int D;
int city[MAXN];//城市拥有的救援队
int Graph[MAXN][MAXN];//道路表
int dist[MAXN];//起始点到某城市的最小花费
int Prev[MAXN];