n个城市之间有m条双向路。每条路要耗费一定的油量。每个城市的油价是固定并且已经给出的。有q个询问,表示从城市s走到e,油箱的容量为c,求最便宜的方案。
dp(i,j)表示走到城市i,剩余油量为j的最小花费。然后用优先队列更新,优先更新花费小的状态。走到一座城市,要么加油,要么走向下一个城市(在油量充足的情况下)。
#include<cstdio>
#include<cstring>
#include<queue>
#define MAXN 1010
using namespace std;
struct Edge
{
int v,w,next;
}edge[20010];
int cnt,head[MAXN];
void add_edge(int u,int v,int