結果

問題 No.1 道のショートカット
ユーザー yuppe19 😺yuppe19 😺
提出日時 2015-10-26 22:53:17
言語 Nim
(2.0.2)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,005 bytes
コンパイル時間 993 ms
コンパイル使用メモリ 66,296 KB
最終ジャッジ日時 2024-11-14 19:21:47
合計ジャッジ時間 1,425 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
/home/judge/data/code/Main.nim(1, 28) Warning: Use the new 'sugar' module instead; future is deprecated [Deprecated]
/home/judge/data/code/Main.nim(25, 14) Error: type mismatch
Expression: <V
  [1] V: int

Expected one of (first mismatch at [position]):
[1] proc `<`(x, y: bool): bool
[1] proc `<`(x, y: char): bool
[1] proc `<`(x, y: float): bool
[1] proc `<`(x, y: float32): bool
[1] proc `<`(x, y: int16): bool
[1] proc `<`(x, y: int32): bool
[1] proc `<`(x, y: int8): bool
[1] proc `<`(x, y: pointer): bool
[1] proc `<`(x, y: string): bool
[1] proc `<`(x, y: uint): bool
[1] proc `<`(x, y: uint16): bool
[1] proc `<`(x, y: uint32): bool
[1] proc `<`(x, y: uint64): bool
[1] proc `<`(x, y: uint8): bool
[1] proc `<`[Enum: enum](x, y: Enum): bool
[1] proc `<`[T: tuple](x, y: T): bool
[1] proc `<`[T](x, y: ptr T): bool
[1] proc `<`[T](x, y: ref T): bool
[1] proc `<`[T](x, y: set[T]): bool
[2] proc `<`(x, y: int): bool
[2] proc `<`(x, y: int64): bool

ソースコード

diff #

import strutils, sequtils, future

const
  INF = 987654321

type
  Route = object
    to: int
    cost: int
    time: int
proc newRoute(): Route = Route(to: 0, cost: 0, time: 0)
proc newRoute(to, cost, time: int): Route = Route(to: to, cost: cost, time: time)

var
  N = stdin.readLine.parseInt
  C = stdin.readLine.parseInt
  V = stdin.readLine.parseInt
  S = stdin.readLine.split.map((x: string) => parseInt(x) - 1)
  T = stdin.readLine.split.map((x: string) => parseInt(x) - 1)
  Y = stdin.readLine.split.map(parseInt)
  M = stdin.readLine.split.map(parseInt)
  routes = newSeqWith(N, newSeqWith(0, newRoute()))
  dp = newSeqWith(N, newSeqWith(C+1, INF))

for i in 0.. <V:
  routes[S[i]].add(newRoute(T[i], Y[i], M[i]))

dp[0][0] = 0
for v in 0.. <N:
  for cost in 0.. C:
    for route in routes[v]:
      var ncost = cost + route.cost
      if ncost > C: continue
      dp[route.to][ncost] = min(dp[route.to][ncost], dp[v][cost] + route.time);

var res = min(dp[N-1])
if res == INF: res = -1
echo res
0