Ctrl K

Путь в дереве без одинаковых соседей

Сложная
Дано дерево из n вершин с номерами от 0 до n − 1, подвешенное за вершину 0. Оно задано массивом parent: parent[i] — родитель вершины i, а у корня parent[0] = -1. На каждой вершине написана буква: вершине i соответствует labels[i]. Путь в дереве — цепочка различных вершин, где каждые две соседние соединены ребром; идти можно и вверх, и вниз. Найдите путь, в котором никакие две соседние вершины не несут одинаковую букву, и верните наибольшее возможное число вершин в нём.
Пример 1
parent=[-1, 0, 0, 1, 2, 2], labels='abbcac' → 5

Путь 3 → 1 → 0 → 2 → 4 даёт буквы c, b, a, b, a — соседние везде разные, в пути 5 вершин.

Пример 2
parent=[-1, 0, 1], labels='zzz' → 1

У всех вершин одна буква, поэтому путь — только одна вершина.

Пример 3
parent=[-1, 0, 0, 0], labels='abac' → 3
Ограничения
  • 1 ≤ n ≤ 10⁵
  • len(parent) = len(labels) = n
  • parent[0] = -1, для остальных 0 ≤ parent[i] < n
  • parent задаёт корректное дерево
  • labels состоит из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПорядок букв по словарю СложнаяРаскрыть шаблон с переменными СредняяСамый длинный подъём по карте СложнаяШарик и лунка СложнаяПрогулки только в гору Сложная
загружаем Python…
Вход
parent=[-1, 0, 0, 1, 2, 2], labels='abbcac'
Ожидается
5

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