增加一维表示油量,每个状态可以考虑向下一个节点移动,也可以选择加一单位油。
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
typedef pair<int,int> pii;
const int maxn = 1005;
const int maxm = 105;
const int inf = 0x3f3f3f3f;
int N, M, P[maxn], D[maxn][maxm], vis[maxn][maxm];
vector<pii> G[maxn];
struct State {
int u, l, d;
State(int u = 0, int l = 0, int d = 0): u(u), l(l), d(d) {}
bool operator < (const State& a)