結果
問題 | No.1 道のショートカット |
ユーザー |
![]() |
提出日時 | 2015-10-07 23:00:27 |
言語 | Python2 (2.7.18) |
結果 |
AC
|
実行時間 | 107 ms / 5,000 ms |
コード長 | 730 bytes |
コンパイル時間 | 263 ms |
コンパイル使用メモリ | 6,784 KB |
実行使用メモリ | 6,912 KB |
最終ジャッジ日時 | 2024-07-20 16:17:19 |
合計ジャッジ時間 | 2,574 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 40 |
ソースコード
# coding: utf-8 N = int(raw_input()) C = int(raw_input()) V = int(raw_input()) S = map(int, raw_input().split()) T = map(int, raw_input().split()) Y = map(int, raw_input().split()) M = map(int, raw_input().split()) INF = int(1e9+7) # dpテーブル # dp[i][k]=i番目の街で、使用金額k以下の時の最短経路 # 辿りつけない時はINF dp = [[INF for _ in xrange(C+1)] for _ in xrange(N)] dp[0][0]=0 toList = [[] for _ in xrange(N)] for i in xrange(V): toList[S[i]-1].append((T[i]-1, Y[i], M[i])) for i in xrange(N): for k in xrange(C+1): if dp[i][k]!=INF: for t, y, m in toList[i]: if k + y <= C: dp[t][k+y]=min(dp[t][k+y], dp[i][k]+m) res = min(dp[N-1]) if res==INF: print -1 else: print res