문제링크
import kotlin.math.min
fun main() {
val bufferedReader = System.`in`.bufferedReader()
val bufferedWriter = System.out.bufferedWriter()
val (n, m) = bufferedReader
.readLine()
.split(" ")
.map { it.toInt() }
val friends = Array(n) { Array(n) { Int.MAX_VALUE / 2 } }
repeat(n) {
friends[it][it] = 0
}
repeat(m) {
val (a, b) = bufferedReader
.readLine()
.split(" ")
.map { it.toInt() }
friends[a - 1][b - 1] = 1
friends[b - 1][a - 1] = 1
}
for (k in 0 until n) {
for (i in 0 until n) {
for (j in 0 until n) {
if (friends[i][k] + friends[k][j] < friends[i][j]) {
friends[i][j] = friends[i][k] + friends[k][j]
}
}
}
}
var minConnection = Int.MAX_VALUE
var answer = 0
friends.forEachIndexed { index, friend ->
val totalConnection = friend.sumOf { it }
if (totalConnection < minConnection) {
minConnection = totalConnection
answer = index + 1
}
}
bufferedWriter.write("$answer")
bufferedReader.close()
bufferedWriter.close()
}
주석 없는 코드를 만들기 위해 노력하는 개발자입니다.
혹시라도 의도가 분명하지 않아보이는 (이해가 되지 않는) 코드가 있으시다면 편하게 답변 달아주시면 정말 감사하겠습니다.