結果

問題 No.417 チューリップバブル
ユーザー Eliza_0xEliza_0x
提出日時 2018-05-19 15:58:24
言語 Scala(Beta)
(3.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,054 bytes
コンパイル時間 5,350 ms
コンパイル使用メモリ 233,944 KB
最終ジャッジ日時 2024-04-27 02:33:04
合計ジャッジ時間 5,683 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
-- [E040] Syntax Error: Main.scala:20:71 ---------------------------------------
20 |  def dfs(cur: Int, already_access: scala.collection.mutable.Set[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, scala.collection.mutable.Set())

  println(memo(0).max)

  def dfs(cur: Int, already_access: scala.collection.mutable.Set[Int]) {
    already_access += cur

    for (i <- 0 to m) memo(cur)(i) = points(cur)

    for (edge <- edges(cur); if !already_access.exists(_ == edge.to)) {
      dfs(edge.to, already_access)
      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