#include #define FOR(i,a,b) for (int i=(a);i<(b);i++) #define FORR(i,a,b) for (int i=(a);i>=(b);i--) #define pb push_back #define pcnt __builtin_popcount #define show(x) cout<<#x<<" = "< pii; typedef vector vi; typedef vector vvi; typedef vector vpii; typedef set si; typedef pair pll; typedef vector vl; typedef vector vvl; typedef vector vpll; typedef set sl; templatestring join(vector&v) {stringstream s;FOR(i,0,sz(v))s<<' '<b)swap(a,b);for(;a>0;b%=a,swap(a,b));return b;} int modpow(ll a,ll n,int m){if(a==0)return a;ll p=1;for(;n>0;n/=2,a=a*a%m)if(n&1)p=p*a%m;return(int)p;} void dout(double d){printf("%.12f\n",d);} const int iinf = 1e9; const ll linf = 1e18; const int mod = 1e9+7; const double eps = 1e-10; struct Dijk{ // solve(s, g) or solve(s). // show d and p. typedef pair pli; int n; vectorE; vl d; vi p; void init(const vector&e){n=sz(e);E=e;FOR(i,0,n)sort(rng(E[i]));d.resize(n);p.resize(n);} void o(int S,int G){FOR(i,0,n){d[i]=(i==S)?0:linf;p[i]=-1;}priority_queue,greater>Q;Q.push(pll(0,S));pli t;vectorF;FOR(i,0,n)F.pb(0);ll f;int c=0,s;while(!Q.empty()){t=Q.top();Q.pop();f=t.fi;s=t.se;if(F[s])continue;F[s]=1;c++;if(c==n||s==G)break;each(itr,E[s]){ll ff=itr->fi,ss=itr->se;if((!F[ff])&&(f+ss E; typedef pair tii; vector > >F; main(){ cin.tie(0); ios::sync_with_stdio(false); cin >> n >> C >> V; FOR(i, 0, V)cin >> S[i]; FOR(i, 0, V)cin >> T[i]; FOR(i, 0, V)cin >> Y[i]; FOR(i, 0, V)cin >> M[i]; E.resize(n); F.resize(n); FOR(i, 0, V){ E[S[i]-1].pb(pll(T[i]-1, Y[i])); F[S[i]-1].pb(pair(T[i]-1, pii(M[i], Y[i]))); } Dijk dij; dij.init(E); ll d = dij.solve(0, n-1); if(d > C){ cout << -1 << endl; return 0; } FOR(i, 1, n){ FOR(j, 0, 301){ DP[i][j] = iinf; } } priority_queue, greater > que; que.push(tii(pii(0, 0), 0)); tii t; int tn, vn; while(true){ t = que.top(); que.pop(); if(t.se == n-1){ cout << t.fi.fi << endl; return 0; } each(itr, F[t.se]){ tn = t.fi.fi + itr->se.fi; vn = t.fi.se + itr->se.se; if((vn <= C)&&(DP[itr->fi][vn] > tn)){ FOR(i, vn, 301)mins(DP[itr->fi][i], tn); que.push(tii(pii(tn, vn), itr->fi)); } } } }