Ctrl K

Лучшие корни дерева

Средняя
Дано дерево из n вершин с номерами от 0 до n − 1: связный граф без циклов, рёбра которого заданы списком links, где links[i] = [a, b] — ребро между a и b. Любую вершину можно объявить корнем. Высота дерева с выбранным корнем — число рёбер на самом длинном пути от корня до листа. Верните все вершины, при выборе которых в качестве корня высота получается наименьшей. Порядок не важен.
Пример 1
n=5, links=[[0, 1], [1, 2], [2, 3], [3, 4]] → [2]

Это цепочка 0–1–2–3–4. С корнем в 2 высота дерева равна 2, с любым другим корнем — больше.

Пример 2
n=5, links=[[0, 1], [0, 2], [0, 3], [3, 4]] → [0, 3]

С корнем в 0 или в 3 высота равна 2, меньше получить нельзя.

Пример 3
n=1, links=[] → [0]
Ограничения
  • 1 ≤ n ≤ 2 · 10⁴
  • len(links) == n − 1
  • 0 ≤ a, b < n, a ≠ b
  • Рёбра не повторяются, граф — дерево
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПорядок сборки модулей СредняяОчередь на курсы СредняяПути, которые всегда заканчиваются СредняяСамый длинный поход по лесу СредняяНужен ли этот шаг раньше Средняя
загружаем Python…
Вход
n=5, links=[[0, 1], [1, 2], [2, 3], [3, 4]]
Ожидается
[2]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 64 теста на сервере, включая скрытые.