Ctrl K

Самый длинный поход по лесу

Средняя
В лесу n полян, пронумерованных от 0 до n - 1, и n - 1 тропа. Тропа trails[i] = [a, b] соединяет поляны a и b, по ней можно идти в обе стороны. Из любой поляны можно дойти до любой другой, причём ровно одним путём без повторов (то есть тропы образуют дерево). Туристы хотят выбрать две поляны, путь между которыми самый длинный. Верните число троп на этом пути.
Пример 1
trails=[[0, 1], [1, 2], [1, 3], [3, 4], [4, 5]] → 4

Самый длинный маршрут — 0 → 1 → 3 → 4 → 5 (или 2 → 1 → 3 → 4 → 5): 4 тропы.

Пример 2
trails=[[2, 0], [2, 1], [2, 3]] → 2

Все тропы сходятся в поляне 2, так что любой маршрут между двумя другими полянами проходит через неё и состоит из 2 троп.

Пример 3
trails=[] → 0

Поляна всего одна, идти некуда — ответ 0.

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

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