結果

問題 No.417 チューリップバブル
ユーザー Eliza_0xEliza_0x
提出日時 2018-05-19 16:02:21
言語 Scala(Beta)
(3.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 924 bytes
コンパイル時間 6,505 ms
コンパイル使用メモリ 232,788 KB
最終ジャッジ日時 2024-11-14 20:25:47
合計ジャッジ時間 6,883 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
-- [E040] Syntax Error: Main.scala:18:31 ---------------------------------------
18 |  def dfs(cur: Int, prev: Int) {
   |                               ^
   |                               '=' expected, but '{' found
1 error found

ソースコード

diff #

case class Edge(to: Int, cost: Int)

object Main extends App {
  val scan = new java.util.Scanner(System.in)
  val n, m = scan.next().toInt  
  val points = (1 to n).toArray.map(_ => scan.next().toInt)
  val edges: Array[List[Edge]] = Array.fill(n)(List())
  for (_ <- 1 until n) {
    val from, to, cost = scan.next().toInt
    edges(from) = Edge(to, cost) :: edges(from)
    edges(to) = Edge(from, cost) :: edges(to)
  }

  val memo: Array[Array[Int]] = Array.fill(n, m+1)(0)
  dfs(0, -1)
  println(memo(0).max)

  def dfs(cur: Int, prev: Int) {
    for (i <- 0 to m) memo(cur)(i) = points(cur)
    for (edge <- edges(cur); if prev != edge.to) {
      dfs(edge.to, cur)
      for (i <- m to 0 by -1; j <- i+edge.cost*2 to 0 by -1) {
        if (i-(j+edge.cost*2) >= 0) {
          memo(cur)(i) = math.max(
            memo(cur)(i),
            memo(cur)(i-(j+edge.cost*2)) + memo(edge.to)(j))
        }
      }
    }
  }
}
0