Ctrl K

Стоянки по размаху

Сложная
В заповеднике camps туристических стоянок с номерами от 1 до camps. Их соединяют camps - 1 троп: тропа [u, v] ведёт в обе стороны между стоянками u и v, и от любой стоянки можно дойти до любой другой ровно одним путём. Иначе говоря, стоянки и тропы образуют дерево. **Группа** — это набор из хотя бы двух стоянок, внутри которого можно пройти от любой стоянки до любой другой, не заходя на стоянки вне набора. Две группы различны, если какая-то стоянка входит только в одну из них. **Размах** группы — наибольшее расстояние между двумя её стоянками, где расстояние — число троп на пути между ними. Верните массив длины camps - 1, в котором элемент с индексом d - 1 равен количеству групп с размахом ровно d.
Пример 1
camps=5, trails=[[1, 2], [2, 3], [3, 4], [3, 5]] → [4, 5, 3, 0]

Четыре группы из двух соседних стоянок имеют размах 1. Размах 2 у групп {1,2,3}, {2,3,4}, {2,3,5}, {3,4,5} и {2,3,4,5}. Размах 3 у групп {1,2,3,4}, {1,2,3,5} и {1,2,3,4,5}.

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

Все тропы сходятся в стоянке 4. Любая группа из двух и более стоянок обязана её содержать: три группы по две стоянки (размах 1) и четыре группы, где к четвёртой стоянке добавлены две или три другие (размах 2). Размаха 3 нет ни у одной группы.

Пример 3
camps=2, trails=[[2, 1]] → [1]
Ограничения
  • 2 ≤ camps ≤ 15
  • len(trails) == camps - 1
  • trails[i] = [u, v], 1 ≤ u, v ≤ camps, u ≠ v
  • Тропы не повторяются и связывают все стоянки в дерево
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПути-палиндромы в дереве СложнаяКак рассчитаться за меньше переводов СложнаяДве группы с одинаковым средним СложнаяКратчайший обход всех узлов СложнаяСклейка фрагментов Сложная
загружаем Python…
Вход
camps=5, trails=[[1, 2], [2, 3], [3, 4], [3, 5]]
Ожидается
[4, 5, 3, 0]

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