結果
| 問題 |
No.417 チューリップバブル
|
| コンテスト | |
| ユーザー |
Eliza_0x
|
| 提出日時 | 2018-05-19 15:58:24 |
| 言語 | Scala(Beta) (3.6.2) |
| 結果 |
CE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,054 bytes |
| コンパイル時間 | 6,829 ms |
| コンパイル使用メモリ | 231,928 KB |
| 最終ジャッジ日時 | 2024-11-14 20:25:16 |
| 合計ジャッジ時間 | 7,354 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
[31m[31m-- [E040] Syntax Error: Main.scala:20:71 ---------------------------------------[0m[0m
[31m20 |[0m [33mdef[0m [36mdfs[0m([36mcur[0m: [35mInt[0m, [36malready_access[0m: scala.collection.mutable.Set[[35mInt[0m]) {
[31m[31m |[0m ^[0m
[31m |[0m '=' expected, but '{' found
1 error found
ソースコード
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))
}
}
}
}
}
Eliza_0x