結果
問題 |
No.1 道のショートカット
|
ユーザー |
![]() |
提出日時 | 2015-08-27 13:01:35 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,026 bytes |
コンパイル時間 | 664 ms |
コンパイル使用メモリ | 74,080 KB |
実行使用メモリ | 814,720 KB |
最終ジャッジ日時 | 2024-07-08 04:12:16 |
合計ジャッジ時間 | 3,271 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 6 RE * 9 MLE * 1 -- * 24 |
ソースコード
#include <iostream> #include <numeric> #include <algorithm> #include <string> #include <vector> #include <functional> #include <cmath> #include <queue> #define rep(i, a) FOR(i, 0, a) #define FOR(i, a, b) for(int i = a; i < b; ++i) typedef long long ll; typedef unsigned long long ull; typedef std::pair<int, int> P; struct edge{ int to, time, cost; }; const int max = 51; const int inf = (int)1e+9; int n, c; //P cost[max]; std::vector<edge> node[max]; int ans = inf; void dfs(int i, int j, int k){ if (i == n - 1){ if (j < ans && k <= c)ans = j; } rep(p, node[i].size())dfs(node[i][p].to, j + node[i][p].time, k + node[i][p].cost); } int main(){ int v; int s[51], t[51], y[51], m[51]; std::cin >> n >> c >> v; rep(i, v)std::cin >> s[i]; rep(i, v)std::cin >> t[i]; rep(i, v)std::cin >> y[i]; rep(i, v)std::cin >> m[i]; rep(i, v){ edge a; a.to = t[i] - 1; a.cost = y[i]; a.time = m[i]; node[s[i] - 1].push_back(a); } dfs(0, 0, 0); std::cout << (ans == inf ? -1 : ans) << std::endl; return 0; }