結果
問題 |
No.1449 新プロランド
|
ユーザー |
![]() |
提出日時 | 2021-03-31 14:23:30 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 948 bytes |
コンパイル時間 | 1,839 ms |
コンパイル使用メモリ | 176,020 KB |
実行使用メモリ | 14,720 KB |
最終ジャッジ日時 | 2024-12-24 01:43:48 |
合計ジャッジ時間 | 2,780 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 WA * 3 |
ソースコード
#include <bits/stdc++.h> using namespace std; const int INF = 1000000000; int main(){ int N, M; cin >> N >> M; vector<vector<pair<int, int>>> E(N); for (int i = 0; i < M; i++){ int A, B, C; cin >> A >> B >> C; A--; B--; E[A].push_back(make_pair(C, B)); E[B].push_back(make_pair(C, A)); } vector<int> T(N); for (int i = 0; i < N; i++){ cin >> T[i]; } int MAX = 30001; vector<vector<int>> dp(MAX + 1, vector<int>(N, INF)); dp[0][0] = 0; for (int i = 0; i <= MAX; i++){ for (int j = 0; j < N; j++){ if (dp[i][j] != INF){ for (auto P : E[j]){ int w = P.second; int i2 = i + T[j]; if (i2 <= MAX){ int t = dp[i][j] + T[j] + P.first / (i + T[j]); dp[i2][w] = min(dp[i2][w], t); } } } } } int ans = INF; for (int i = 0; i <= MAX; i++){ ans = min(ans, dp[i][N - 1]); } cout << ans << endl; }