結果
| 問題 |
No.1 道のショートカット
|
| コンテスト | |
| ユーザー |
agatan
|
| 提出日時 | 2015-04-26 15:20:43 |
| 言語 | D (dmd 2.109.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,437 bytes |
| コンパイル時間 | 891 ms |
| コンパイル使用メモリ | 104,096 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-06-12 02:38:10 |
| 合計ジャッジ時間 | 2,560 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 36 WA * 2 RE * 2 |
ソースコード
import std.array, std.stdio, std.string, std.algorithm, std.conv;
ulong[][] dp;
void main()
{
ulong N = readln.strip.to!int;
ulong C = readln.strip.to!int;
ulong V = readln.strip.to!int;
auto S = readln.split.map!"(a.to!ulong - 1)";
auto T = readln.split.map!"(a.to!ulong - 1)";
auto Y = readln.split.map!(to!ulong);
auto M = readln.split.map!(to!ulong);
ulong[] es;
es.length = N;
foreach (ref e; es) {
e = 0;
}
ulong[][] edge;
edge.length = N;
foreach (ref e; edge) {
e.length = N;
}
ulong[][] dist;
dist.length = N;
foreach (ref e; dist) {
e.length = N;
}
ulong[][] cost;
cost.length = N;
foreach (ref e; cost) {
e.length = N;
}
foreach (i; 0..V) {
edge[S[i]][es[S[i]]] = T[i];
dist[S[i]][es[S[i]]] = M[i];
cost[S[i]][es[S[i]]] = Y[i];
es[S[i]]++;
}
dp.length = N;
foreach (ref d; dp) {
d.length = C+1;
d[] = ulong.max;
}
foreach(ref d; dp[0]) d = 0;
foreach (n; 0..N) {
foreach (c; 0..C+1) {
if (dp[n][c] != ulong.max)
foreach (j; 0..es[n]) {
if (c + cost[n][j] <= C) dp[edge[n][j]][c + cost[n][j]] = min(dp[edge[n][j]][c+cost[n][j]], dp[n][c] + dist[n][j]);
}
}
}
if (dp[N-1][C] == ulong.max) writeln(-1);
else writeln(dp[N-1][C]);
}
agatan