結果
問題 |
No.1 道のショートカット
|
ユーザー |
|
提出日時 | 2025-05-12 00:09:47 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,223 bytes |
コンパイル時間 | 1,219 ms |
コンパイル使用メモリ | 94,280 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-05-12 00:09:50 |
合計ジャッジ時間 | 2,822 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 33 WA * 7 |
ソースコード
#include<iostream> #include<vector> #include<queue> #include<tuple> #include<algorithm> using namespace std; using ll = long long; using P = pair<int, int>; using tu = tuple<int, int, int>; int main(void){ int n, c, v; cin >> n >> c >> v; vector<int> s(v), t(v), y(v), m(v); for(int i=0; i<v; i++) cin >> s[i], s[i]--; for(int i=0; i<v; i++) cin >> t[i], t[i]--; for(int i=0; i<v; i++) cin >> y[i]; for(int i=0; i<v; i++) cin >> m[i]; vector<vector<vector<P>>> to(n, vector<vector<P>>(n)); for(int i=0; i<v; i++){ to[s[i]][t[i]].emplace_back(m[i], y[i]); //to[t[i]][s[i]]=min(to[t[i]][s[i]], {m[i], y[i]}); } vector<P> dist(n, {1e8, 1e8}); priority_queue<tu, vector<tu>, greater<tu>> dij; dij.emplace(0, 0, 0); dist[0]={0, 0}; while(dij.size()){ auto [time, cost, idx]=dij.top(); dij.pop(); if(dist[idx]!=P(time, cost)) continue; for(int i=0; i<n; i++){ for(auto [dt, dc]:to[idx][i]){ if(cost+dc>c) continue; if(dist[i]>P(time+dt, cost+dc)){ dist[i]=P(time+dt, cost+dc); dij.emplace(time+dt, cost+dc, i); } } } } if(dist[n-1].second<=c) cout << dist[n-1].first << endl; else cout << -1 << endl; return 0; }