結果
| 問題 |
No.1 道のショートカット
|
| コンテスト | |
| ユーザー |
tsubu_taiyaki
|
| 提出日時 | 2017-01-29 10:00:05 |
| 言語 | D (dmd 2.109.1) |
| 結果 |
AC
|
| 実行時間 | 5 ms / 5,000 ms |
| コード長 | 1,736 bytes |
| コンパイル時間 | 776 ms |
| コンパイル使用メモリ | 121,604 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-06-12 06:41:27 |
| 合計ジャッジ時間 | 1,956 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 40 |
ソースコード
import std.algorithm;
import std.array;
import std.ascii;
import std.bigint;
import std.complex;
import std.container;
import std.conv;
import std.functional;
import std.math;
import std.range;
import std.stdio;
import std.string;
import std.typecons;
auto readInts() {
return array(map!(to!int)(readln().strip().split()));
}
auto readInt() {
return readInts()[0];
}
auto readLongs() {
return array(map!(to!long)(readln().strip().split()));
}
auto readLong() {
return readLongs()[0];
}
void readlnTo(T...)(ref T t) {
auto s = readln().split();
assert(s.length == t.length);
foreach(ref ti; t) {
ti = s[0].to!(typeof(ti));
s = s[1..$];
}
}
const real eps = 1e-10;
const long p = 1_000_000_000 + 7;
void main(){
auto N = readInt();
auto C = readInt();
auto V = readInt();
auto S = readInts();
auto T = readInts();
auto Y = readInts();
auto M = readInts();
S[] -= 1;
T[] -= 1;
auto e = new Tuple!(int, int, int)[][](N);
foreach(i; iota(V)) {
e[S[i]] ~= tuple(T[i], Y[i], M[i]);
}
auto dp = new long[][](N, C+1);
foreach(i; iota(N)) {
foreach(j; iota(C+1)) {
dp[i][j] = long.max/2;
}
}
dp[0][0] = 0;
foreach(i; iota(N)) {
foreach(j; iota(C+1)) {
foreach(ei; e[i]) {
auto t = ei[0];
auto y = ei[1];
auto m = ei[2];
if(j+y > C) {
continue;
}
dp[t][j+y] = min(dp[t][j+y], dp[i][j] + m);
}
}
}
auto ans = long.max;
foreach(i; iota(C+1)) {
ans = min(ans, dp[N-1][i]);
}
writeln(ans < long.max/2 ? ans: -1);
}
tsubu_taiyaki