結果

問題 No.1 道のショートカット
ユーザー k_kadora
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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);
		}
	}
}
0