Ctrl K

Самая большая одноцветная ветка

Средняя
Дано дерево из n вершин с номерами от 0 до n - 1, корень — вершина 0. Список edges содержит n - 1 ребро: пара [a, b] значит, что вершины a и b соединены. Вершина i покрашена в цвет colors[i]. Поддерево вершины v — это сама v и все её потомки. Найдите вершину, у которой всё поддерево окрашено в один цвет, и верните наибольший возможный размер такого поддерева (число вершин в нём).
Пример 1
edges=[[0, 1], [1, 2], [1, 3], [0, 4]], colors=[2, 5, 5, 5, 2] → 3

Поддерево вершины 1 — это вершины 1, 2, 3, все цвета 5: размер 3. У корня дети разных цветов, так что всё дерево не подходит.

Пример 2
edges=[[1, 0], [2, 0]], colors=[4, 4, 4] → 3

Всё дерево одного цвета — ответ 3. Рёбра можно записывать в любом направлении.

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

Одноцветный только лист 2 — его поддерево из одной вершины.

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

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