문제링크
data class Node(val id: Int, val weight: Int)
var maxWeight = 0
var maxRootId = 0
fun main() {
val bufferedReader = System.`in`.bufferedReader()
val bufferedWriter = System.out.bufferedWriter()
val n = bufferedReader.readLine().toInt()
val graph = Array(n + 1) { mutableListOf<Node>() }
val visited = Array(n + 1) { false }
while (true) {
val input = bufferedReader.readLine() ?: break
val info = input.split(" ").map { it.toInt() }
graph[info[0]].add(Node(info[1], info[2]))
graph[info[1]].add(Node(info[0], info[2]))
}
findFarthestNode(graph, 1, 0, visited, n)
findFarthestNode(graph, maxRootId, 0, visited, n)
bufferedWriter.write("$maxWeight")
bufferedReader.close()
bufferedWriter.close()
}
fun findFarthestNode(graph: Array<MutableList<Node>>, rootId: Int, weight: Int, visited: Array<Boolean>, n: Int) {
maxWeight = 0
initVisited(visited, n, rootId)
dfs(graph, rootId, weight, visited)
}
fun initVisited(visited: Array<Boolean>, n: Int, rootId: Int) {
for (i in 0..n) {
visited[i] = false
}
visited[rootId] = true
}
fun dfs(graph: Array<MutableList<Node>>, rootId: Int, weight: Int, visited: Array<Boolean>) {
if (maxWeight < weight) {
maxWeight = weight
maxRootId = rootId
}
for (node in graph[rootId]) {
if (!visited[node.id]) {
visited[node.id] = true
dfs(graph, node.id, weight + node.weight, visited)
}
}
}
주석 없는 코드를 만들기 위해 노력하는 개발자입니다.
혹시라도 의도가 분명하지 않아보이는 (이해가 되지 않는) 코드가 있으시다면 편하게 답변 달아주시면 정말 감사하겠습니다.