結果

問題 No.1 道のショートカット
ユーザー kou_kkk
提出日時 2025-08-04 00:51:06
言語 Nim
(2.2.0)
結果
MLE  
実行時間 -
コード長 720 bytes
コンパイル時間 4,513 ms
コンパイル使用メモリ 72,428 KB
実行使用メモリ 814,452 KB
最終ジャッジ日時 2025-08-04 00:51:16
合計ジャッジ時間 8,514 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 7 MLE * 1 -- * 32
権限があれば一括ダウンロードができます

ソースコード

diff #

import sequtils, strutils, sugar

let
  # 街の数、持ち金、道の数
  n, c, v = parseInt stdin.readLine
  # 発、着、費用、時間
  s, t, y, m = stdin.readLine.split.map parseInt

var
  # (行き先、費用、時間)
  g = newSeq[seq[(int, int, int)]](n)
  # (合計費用、合計時間)
  dp = newSeq[seq[(int, int)]](n)

for i in 0 .. v-1:
  g[s[i]-1].add (t[i]-1, y[i], m[i])

dp[0].add (0, 0)

for i in 0 ..< n-1:
  for (yenX, timeX) in dp[i]:
    for (node, yenY, timeY) in g[i]:
      let
        yen = yenX + yenY
      if yen > c: continue
      dp[node].add (yen, timeX + timeY)

let
  times = newSeq.collect:
            for (_, a) in dp[n-1]: a

echo:
  if times.len == 0: -1
  else: min times
0