結果
問題 | No.1 道のショートカット |
ユーザー |
|
提出日時 | 2015-06-15 02:32:59 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 299 ms / 5,000 ms |
コード長 | 1,141 bytes |
コンパイル時間 | 3,357 ms |
コンパイル使用メモリ | 77,164 KB |
実行使用メモリ | 47,024 KB |
最終ジャッジ日時 | 2024-07-20 16:16:17 |
合計ジャッジ時間 | 12,337 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 40 |
ソースコード
import java.util.Scanner; public class Yuki1{ public static void main(String[] arg){ Scanner sc = new Scanner(System.in); int n,c,v,res = 50000; boolean find=false; n = sc.nextInt(); c = sc.nextInt(); v = sc.nextInt(); int[] s = new int[v]; int[] t = new int[v]; int[] y = new int[v]; int[] m = new int[v]; for(int i = 0;i<v;i++){ s[i] = sc.nextInt(); } for(int i = 0;i<v;i++){ t[i] = sc.nextInt(); } for(int i = 0;i<v;i++){ y[i] = sc.nextInt(); } for(int i = 0;i<v;i++){ m[i] = sc.nextInt(); } int[][] dp = new int[n+1][c+1]; dp[1][0] = 1; for(int i = 0;i<n+1;i++){ for(int j = 0;j<c+1;j++){ dp[i][j] = 50000; } } dp[1][0] = 0; for(int i = 1;i<n;i++){ for(int j = 0;j<v;j++){ for(int k = 0;k<=c-y[j];k++){ if(dp[i][k] != 50000 && s[j] == i && dp[t[j]][k+y[j]] > dp[i][k] + m[j]){ dp[t[j]][k+y[j]] = dp[i][k] + m[j]; } } } } for(int i = 0; i<c+1;i++){ if(dp[n][i] != 0){ if(res > dp[n][i]){ res = dp[n][i]; find = true; } } } if(find){ System.out.println(res); }else{ System.out.println(-1); } } }