Ctrl K

Чётные переходы между двумя королевствами

Сложная
Есть два королевства. В первом n городов с номерами от 0 до n - 1, во втором — m городов от 0 до m - 1. Дороги каждого королевства образуют дерево: roads_a[i] = [a, b] — дорога между городами a и b первого королевства, roads_b[i] = [u, v] — второго. Город y назовём удобным для города x, если путь от x до y проходит по чётному числу дорог. Сам город всегда удобен для себя. Для каждого города i первого королевства разрешено построить один мост между любым городом первого королевства и любым городом второго. Верните массив answer длины n, где answer[i] — наибольшее число удобных для i городов в обоих королевствах вместе, если мост выбран лучшим образом. Для разных i мосты выбираются независимо: перед следующим вопросом мост убирают.
Пример 1
roads_a=[[0, 1], [1, 2]], roads_b=[[0, 1], [0, 2], [0, 3]] → [5, 4, 5]

В первом королевстве из города 0 чётно достижимы 0 и 2, из города 1 — только сам 1. Во втором выгоднее всего соединиться с городом 0: тогда на чётном расстоянии окажутся его три соседа. Итог [5, 4, 5].

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

Каждый город первого королевства чётно достижим только из себя, во втором королевстве добавится ещё один город: [2, 2].

Пример 3
roads_a=[[0, 1], [0, 2], [2, 3], [3, 4]], roads_b=[[0, 1], [1, 2]] → [4, 5, 5, 4, 5]
Ограничения
  • 2 ≤ n, m ≤ 10⁵
  • len(roads_a) = n - 1, len(roads_b) = m - 1
  • 0 ≤ a, b < n; 0 ≤ u, v < m
  • Дороги каждого королевства образуют дерево
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтолбцы дерева с ничьими СложнаяЖук бродит по дереву СложнаяТочка встречи на маршруте СложнаяВысота дерева после среза ветки СложнаяКак соединить два дерева Сложная
загружаем Python…
Вход
roads_a=[[0, 1], [1, 2]], roads_b=[[0, 1], [0, 2], [0, 3]]
Ожидается
[5, 4, 5]

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