complete 11057.kt 15835.kt 20411.kt 25345.kt 28242.kt 32628.kt

This commit is contained in:
2025-07-29 06:36:46 +09:00
parent 2e957b221e
commit b4b22e9af7
6 changed files with 268 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
import java.io.StreamTokenizer
fun find(parents: IntArray, x: Int): Int {
return if (parents[x] == x) {
x
} else {
parents[x] = find(parents, parents[x])
parents[x]
}
}
fun union(parents: IntArray, a: Int, b: Int): Boolean {
val ra = find(parents, a)
val rb = find(parents, b)
if (ra == rb) {
return false
} else if (ra < rb) {
parents[rb] = ra
} else {
parents[ra] = rb
}
return true
}
fun minimumDistanceOfExploration(n: Int, edges: List<Triple<Int, Int, Int>>): Int {
val par = IntArray(n) { it }
var minDist = 0
edges.sortedBy { it.third }.forEach {
val (a, b, w) = it
if (union(par, a, b)) {
minDist += w
}
}
return minDist
}
fun main() = with(StreamTokenizer(System.`in`.bufferedReader())) {
nextToken()
val t = nval.toInt()
(1..t).forEach {
nextToken()
val n = nval.toInt()
nextToken()
val m = nval.toInt()
val edges = (1..m).map {
nextToken()
val s = nval.toInt() - 1
nextToken()
val e = nval.toInt() - 1
nextToken()
val w = nval.toInt()
Triple(s, e, w)
}
println("Case #${it}: ${minimumDistanceOfExploration(n, edges)} meters")
}
}