import java.util.* import kotlin.collections.ArrayList data class Road(val to: Int, val length: Int) fun main() { val (n, m) = readLine()!!.trim().split(' ').map(String::toInt) val nodes = Array(n){ArrayList()} repeat(m) { val (a, b, c) = readLine()!!.trim().split(' ').map(String::toInt) nodes[a - 1].add(Road(to = b - 1, length = c)) nodes[b - 1].add(Road(to = a - 1, length = c)) } val memo = Array(2){ LongArray(n){Long.MAX_VALUE} } val priorityQueue = PriorityQueue>(compareBy(Triple::first)) memo[0][0] = 0 memo[1][0] = 0 priorityQueue.add(Triple(0L, 0, 0)) while (priorityQueue.isNotEmpty()) { val (len, use, pos) = priorityQueue.poll() if (memo[use][pos] < len) continue for ((next, d) in nodes[pos]) { if (memo[use][next] > len + d) { memo[use][next] = len + d priorityQueue.add(Triple(len + d, use, next)) } if (use == 0 && memo[1][next] > len) { memo[1][next] = len priorityQueue.add(Triple(len, 1, next)) } } } for (i in 0 until n){ println(memo[0][i] + memo[1][i]) } }