//package misc.ukiepc2025 fun main() { val (n, kIn) = readInts() val k = kIn - 1 val nei = List(n) { mutableListOf() } repeat(n - 1) { val (u, v) = readInts().map { it - 1 } nei[u].add(v); nei[v].add(u) } val p = IntArray(n) { -1 } val dfsList = mutableListOf() fun dfs(v: Int) { dfsList.add(v) for (u in nei[v]) if (u != p[v]) { p[u] = v dfs(u) } } dfs(0) val bfsList = mutableListOf(0) for (i in 0 until n) { val v = bfsList[i] for (u in nei[v]) if (u != p[v]) { bfsList.add(u) } } val dfsOrder = IntArray(n) val bfsOrder = IntArray(n) for (i in 0 until n) { dfsOrder[dfsList[i]] = i bfsOrder[bfsList[i]] = i } val countMemo = mutableMapOf() fun count(v: Int): Int = countMemo.getOrPut(v) { if (bfsOrder[v] > bfsOrder[k]) return@getOrPut 0 var result = 1 for (u in nei[v]) if (u != p[v]) { result += count(u) } result } var v = k var ans1 = n var ans2 = n while (v >= 0) { val ans1v = bfsOrder[v] + dfsOrder[k] - dfsOrder[v] + 1 ans1 = minOf(ans1, ans1v) val ans2v = dfsOrder[v] + count(v) ans2 = minOf(ans2, ans2v) v = p[v] } println(ans1) println(ans2) } private fun readStrings() = readln().split(" ") private fun readInts() = readStrings().map { it.toInt() }