From e45fac8f1006d2ac6febe2b01b5de3d1358e1a73 Mon Sep 17 00:00:00 2001 From: yenru0 Date: Fri, 5 Apr 2024 00:32:08 +0900 Subject: [PATCH] complete 11779 aloha dijkstra2 --- zeta_kotlin/completed/11779.kt | 62 ++++++++++++++++++++++++++++++++++ zeta_kotlin/run.sh | 2 +- 2 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 zeta_kotlin/completed/11779.kt diff --git a/zeta_kotlin/completed/11779.kt b/zeta_kotlin/completed/11779.kt new file mode 100644 index 0000000..9d4b4b4 --- /dev/null +++ b/zeta_kotlin/completed/11779.kt @@ -0,0 +1,62 @@ +package completed + +import java.util.PriorityQueue +import java.util.Scanner + +fun solve( + N: Int, + M: Int, + D: MutableList, + E: HashMap>>, + start: Int, + end: Int +): Triple> { + val pq = PriorityQueue>> { a, b -> a.first.compareTo(b.first) } // min heap + pq.add(Triple(0, start, listOf(start))) + D[start] = 0 + + val ret: MutableList>> = mutableListOf() + + while (pq.isNotEmpty()) { + val (cost, now, path) = pq.remove() + + if (cost > D[now]) { + continue + } + if (now == end) { + return Triple(cost, path.size, path) + } + for ((v, w) in E[now]!!) { + val nd = cost + w + if (D[v] > nd) { + D[v] = nd + pq.add(Triple(nd, v, path + listOf(v))) + } + } + } + + println(D.toString()) + return ret.last() +} + +fun main() = with(Scanner(System.`in`)) { + val N = nextLine().toInt() + val D = MutableList(N + 1, { Int.MAX_VALUE }); + val M = nextLine().toInt() + + val E: HashMap>> = HashMap() + for (i in 0..N) { + E[i] = mutableListOf() + }; + for (i in 0 until M) { + val v = nextLine().trim().split(' ').map(String::toInt) + E[v.first()]!!.add(v[1] to v[2]) + + } + val (start, end) = nextLine().trim().split(' ').map(String::toInt) + + val result = solve(start, M, D, E, start, end) + println(result.first) + println(result.second) + println(result.third.joinToString(separator = " ")) +} \ No newline at end of file diff --git a/zeta_kotlin/run.sh b/zeta_kotlin/run.sh index 36fcd1b..a8898d0 100644 --- a/zeta_kotlin/run.sh +++ b/zeta_kotlin/run.sh @@ -1,4 +1,4 @@ #!/bin/bash if [ -z "$*" ]; then echo "No args"; exit 0; fi -kotlinc-jvm $1 -include-runtime a.jar +kotlinc-jvm $1 -include-runtime -d a.jar java -jar a.jar -Dfile.encoding=UTF-8 < stdin.txt