n развилок с номерами от 0 до n - 1; развилка 0 — корень. Массив parents задаёт дерево: parents[i] — родитель развилки i, а parents[0] = -1.
Каждая тропинка помечена буквой: labels[i] — буква на тропинке между i и parents[i]. Символ labels[0] ничего не значит. Строка labels может быть длиннее n — лишние буквы в конце ни к одной тропинке не относятся.
Посчитайте пары развилок (u, v) с u < v, для которых буквы на пути от u до v можно переставить так, чтобы получился палиндром (строка, которая читается одинаково в обе стороны).parents=[-1, 0, 0, 1], labels='xabb' → 4
Подходят пары (0, 1) — «a», (0, 2) — «b», (1, 3) — «b» и (2, 3) — путь 2 → 0 → 1 → 3 даёт «bab». Пути (0, 3) и (1, 2) дают «ab», из него палиндром не собрать.
parents=[-1, 0, 1], labels='zcd' → 2
Буква корня labels[0] ни на что не влияет. Пары соседних узлов дают по одной букве, а путь от 0 до 2 даёт «cd».
parents=[-1], labels='q' → 0
parents задаёт корректное деревоlabels состоит из строчных латинских буквparents=[-1, 0, 0, 1], labels='xabb'
4
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 52 теста на сервере, включая скрытые.