Ctrl K

Кто узнает новость последним

Сложная
Деревни пронумерованы от 0 до n - 1 и соединены дорогами roads: roads[i] = [u, v] — дорога между деревнями u и v. Дорог ровно n - 1, и из любой деревни можно добраться до любой другой. Новость появляется в одной деревне в момент 0. Каждую секунду её узнают все деревни, соседние по дороге с уже знающими. Для каждой деревни i определите, какая деревня узнает новость последней, если новость появилась в i. Верните массив ответов, где i-й элемент — ответ для деревни i. Входные данные таковы, что для каждой стартовой деревни последняя деревня ровно одна.
Пример 1
roads=[[0, 1], [1, 2], [2, 3]] → [3, 3, 0, 0]

Деревни стоят цепочкой 0–1–2–3. Из 0 и 1 новость последней дойдёт до 3, из 2 и 3 — до 0.

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

Две деревни: каждая узнаёт новость последней, если её принесли в соседнюю.

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

Главная дорога 0–1–2–3–4–5, деревня 6 стоит в стороне у деревни 2. Из 6 до 5 четыре дороги, а до 0 только три, поэтому последней узнает 5. Из 3 до 0 три дороги — дальше, чем до 5 или 6.

Ограничения
  • 2 ≤ n ≤ 10⁵
  • len(roads) = n - 1
  • 0 ≤ roads[i][0], roads[i][1] ≤ n - 1
  • Дороги связывают все деревни (это дерево)
  • Для каждой стартовой деревни самая дальняя деревня единственна
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый тяжёлый путь в дереве Сложнаяk ключей рядом с целью СложнаяСуммарные расстояния в дереве дорог СложнаяМинимум охранников на дереве СложнаяСтолбцы дерева с ничьими Сложная
загружаем Python…
Вход
roads=[[0, 1], [1, 2], [2, 3]]
Ожидается
[3, 3, 0, 0]

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