結果
問題 |
No.1 道のショートカット
|
ユーザー |
|
提出日時 | 2025-06-27 08:54:28 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 36 ms / 5,000 ms |
コード長 | 1,539 bytes |
コンパイル時間 | 3,668 ms |
コンパイル使用メモリ | 294,244 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-06-27 08:54:34 |
合計ジャッジ時間 | 5,920 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 40 |
ソースコード
#include <bits/stdc++.h> using namespace std; /////////////////// メイン /////////////////// int main () { //////////////////// 入力 //////////////////// int n, c, v; cin >> n >> c >> v; vector<int> s(v); for (int i=0; i<v; i++) { cin >> s.at(i); s.at(i)--; } vector<int> t(v); for (int i=0; i<v; i++) { cin >> t.at(i); t.at(i)--; } vector<int> y(v); for (int i=0; i<v; i++) { cin >> y.at(i); } vector<int> m(v); for (int i=0; i<v; i++) { cin >> m.at(i); } vector<vector<tuple<int,int,int>>> graph(n); for (int i=0; i<v; i++) { graph.at(s.at(i)).emplace_back(m.at(i),t.at(i),y.at(i)); } //////////////// 出力変数定義 //////////////// int result = 2e9; //////////////////// 処理 //////////////////// vector<vector<int>> times(n,vector<int>(c+1,-1)); priority_queue<tuple<int,int,int>,vector<tuple<int,int,int>>,greater<tuple<int,int,int>>> 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; }