結果
問題 | No.160 最短経路のうち辞書順最小 |
ユーザー | norioc |
提出日時 | 2015-08-16 13:55:11 |
言語 | Scala(Beta) (3.4.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,581 bytes |
コンパイル時間 | 6,674 ms |
コンパイル使用メモリ | 229,272 KB |
最終ジャッジ日時 | 2024-11-14 19:09:07 |
合計ジャッジ時間 | 7,198 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
[31m[31m-- [E040] Syntax Error: Main.scala:16:71 ---------------------------------------[0m[0m [31m16 |[0m [33mdef[0m [36mcalc[0m([36mn[0m: [35mInt[0m, [36ms[0m: [35mInt[0m, [36mg[0m: [35mInt[0m, [36mnodes[0m: [35mListBuffer[0m[([35mInt[0m, [35mInt[0m, [35mInt[0m)]) { [31m[31m |[0m ^[0m [31m |[0m '=' expected, but '{' found [31m[31m-- [E040] Syntax Error: Main.scala:51:32 ---------------------------------------[0m[0m [31m51 |[0m [33mdef[0m [36mmain[0m([36margs[0m: [35mArray[0m[[35mString[0m]) { [31m[31m |[0m ^[0m [31m |[0m '=' expected, but '{' found 2 errors found
ソースコード
import scala.collection.mutable.PriorityQueue import scala.collection.mutable.ListBuffer import scala.collection.mutable.HashSet object Main { val sc = new java.util.Scanner(System.in) def readInts(): Array[Int] = sc.nextLine.split(' ').map(_.toInt) def Ord = new Ordering[(Int, Int, Int)] { def compare(a: (Int, Int, Int), b: (Int, Int, Int)): Int = b._3.compare(a._3) } def calc(n: Int, s: Int, g: Int, nodes: ListBuffer[(Int, Int, Int)]) { val q = new PriorityQueue[(Int, Int, Int)]()(Ord) // (from, to, cost) q.enqueue((0, g, 0)) val pathcost = Array.fill(n)(Int.MaxValue) val prev = Array.fill(n)(new ListBuffer[Int]) while (!q.isEmpty) { val (from, to, cost) = q.dequeue if (cost == pathcost(to)) { prev(to).append(from) } else if (cost < pathcost(to)) { pathcost(to) = cost prev(to).append(from) // println("visit:", to, "cost:", cost) for ((a, b, c) <- nodes) { if (a == to) q.enqueue((to, b, cost + c)) else if (b == to) q.enqueue((to, a, cost + c)) } } } // 経路復元 val path = new ListBuffer[Int] path.append(s) while (path.last != g) { path.append(prev(path.last).min) } println(path.mkString(" ")) } def main(args: Array[String]) { val Array(n, m, s, g) = readInts() val nodes = new ListBuffer[(Int, Int, Int)] for (i <- 0 to m-1) { val Array(a, b, c) = readInts() nodes.append((a, b, c)) } calc(n, s, g, nodes) } }