結果
| 問題 |
No.1 道のショートカット
|
| コンテスト | |
| ユーザー |
dsytk7
|
| 提出日時 | 2017-07-04 20:18:54 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,369 bytes |
| コンパイル時間 | 1,510 ms |
| コンパイル使用メモリ | 170,328 KB |
| 実行使用メモリ | 21,268 KB |
| 最終ジャッジ日時 | 2024-07-08 04:56:55 |
| 合計ジャッジ時間 | 28,593 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 WA * 1 |
| other | AC * 12 WA * 28 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for (int (i)=(0);(i)<(int)(n);++(i))
using ll = long long;
const int inf = 1e8;
pair<int, int> dp[1502][1502];
int main() {
int N, C, V;
cin >> N >> C >> V;
vector<int> S(V), T(V), Y(V), M(V);
rep(i, V) cin >> S[i];
rep(i, V) cin >> T[i];
rep(i, V) cin >> Y[i];
rep(i, V) cin >> M[i];
rep(i,V+1) rep(j, V+1) dp[i][j] = { inf, inf };
for (int i=1; i<=V; ++i) {
dp[i][i] = { 0, 0 };
dp[S[i-1]][T[i-1]] = { M[i-1], Y[i-1] };
}
for (int k=1; k<=V; ++k) {
for (int i=1; i<=V; ++i) {
for (int j=1; j<=V; ++j) {
if (dp[i][k].second + dp[k][j].second <= C) {
int t1 = dp[i][j].first;
int t2 = dp[i][k].first + dp[k][j].first;
int tt1 = dp[i][j].second;
int tt2 = dp[i][k].second + dp[k][j].second;
if (t1 == t2) {
dp[i][j] = { t1, min(tt1, tt2) };
}
else if (t1 < t2) {
continue;
}
else {
dp[i][j] = { t2, tt2 };
}
}
}
}
}
cout << ( dp[1][N].first == inf ? -1 : dp[1][N].first) << endl;
}
dsytk7