题意:
从起点到目的地,一路上有油价不同的加油站,选择最佳的加油方案,使加油钱最少。
思路:
就是两种可选择的方案
如果说当前还没有装满油的话,那么我们可以选择加一升汽油,然后拓展到新的状态,也就是(city,fuel+1)
对于每一条边而言,我们可以通过这条边到达一个城市,那么如果说当前剩余油量可以走完这条路,那么我们就拓展新状态(Next,fuel-w)
这样我们不断地取出当前花费最少的状态进行拓展,然后每一次拓展用ans数组记录最小花费即可.
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1010;
const int M=10100;
int wn[N],head[N],Next[2*M],ver[2*M],dis[2*M],ans[N][102];
bool vis[N][102];
int c,s,e,n,m,t,tot=-1;
void add(int x,int y,int z) {
ver[++tot]=y;
Next[tot]=head[x];
dis[tot]=z;
head[x]