#include using namespace std; /////////////////// メイン /////////////////// int main () { //////////////////// 入力 //////////////////// int n, c, v; cin >> n >> c >> v; vector s(v); for (int i=0; i> s.at(i); s.at(i)--; } vector t(v); for (int i=0; i> t.at(i); t.at(i)--; } vector y(v); for (int i=0; i> y.at(i); } vector m(v); for (int i=0; i> m.at(i); } vector>> graph(n); for (int i=0; i> times(n,vector(c+1,-1)); priority_queue,vector>,greater>> que; que.emplace(0,0,0); while(!que.empty()) { auto [time1,city1,cost1] = que.top(); que.pop(); if (cost1>c) continue; if (times.at(city1).at(cost1)!=-1) continue; times.at(city1).at(cost1) = time1; for (auto [time2,city2,cost2] : graph.at(city1)) { que.emplace(time1+time2,city2,cost1+cost2); } } for (int i : times.at(n-1)) { if (i>=0) result = min(result,i); } if (result==2e9) result = -1; //////////////////// 出力 //////////////////// cout << result << endl; //////////////////// 終了 //////////////////// return 0; }