結果
問題 | No.157 2つの空洞 |
ユーザー | くわい |
提出日時 | 2015-11-22 14:24:06 |
言語 | Scala(Beta) (3.4.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,461 bytes |
コンパイル時間 | 6,978 ms |
コンパイル使用メモリ | 245,648 KB |
最終ジャッジ日時 | 2024-11-14 19:29:31 |
合計ジャッジ時間 | 7,396 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
[31m[31m-- [E040] Syntax Error: Main.scala:58:32 ---------------------------------------[0m[0m [31m58 |[0m [33mdef[0m [36mmain[0m([36margs[0m: [35mArray[0m[[35mString[0m]) { [31m[31m |[0m ^[0m [31m |[0m '=' expected, but '{' found 1 error found
ソースコード
import java.util.Scanner import scala.collection.mutable object Problem157 { type Point = (Int, Int) def splitField(field: Array[Array[String]]): (Seq[(Point)], Seq[(Point)]) = { val allSpaces: Seq[(Point)] = { for { (row, i) <- field.zipWithIndex (col, j) <- row.zipWithIndex if col == "." } yield { (i, j) } }.toSeq val checked = mutable.Set[(Point)]() val queue = mutable.Queue[(Point)]() checked += allSpaces.head queue += allSpaces.head while (queue.nonEmpty) { val space = queue.dequeue() for { dir <- Seq((-1, 0), (1, 0), (0, -1), (0, 1)) row = space._1 + dir._1 col = space._2 + dir._2 if field(row)(col) == "." if !checked.contains(row, col) } { checked += ((row, col)) queue += ((row, col)) } } val room1 = checked.toSeq val room2 = allSpaces diff room1 (room1, room2) } def proc(w: Int, h: Int, field: Array[Array[String]]): Int = { val (room1, room2) = splitField(field) val dists = for { a <- room1 b <- room2 } yield { (a._1 - b._1).abs + (a._2 - b._2).abs - 1 } dists.min } def main(args: Array[String]) { val sc = new Scanner(System.in) val w = sc.nextInt() val h = sc.nextInt() val field = Array.fill(h)(sc.next().split("")) val result: Int = proc(w, h, field) println(result) } }