Олимпиадный тренинг

Задача . E. Палиндромы в дереве


Дано дерево (связный ациклический граф) на n вершинах. Вершины пронумерованы от 1 до n и на каждой вершине записана буква английского алфавита от a до t.

Путь в дереве называется палиндромным, если из букв, записанных на нём, можно составить палиндром (буквы можно произвольным образом переставлять).

Для каждой вершины выведите количество палиндромных путей, проходящих через неё.

Учтите, что путь из вершины u в вершину v и путь из вершины v в вершину u считаются одинаковыми, такие пути должны учитываться ровно один раз.

Входные данные

В первой строке содержится целое число n (2 ≤ n ≤ 2·105) — количество вершин в дереве.

В следующий n - 1 строках содержатся пары чисел u и v (1  ≤  u, v  ≤  n, u ≠ v), обозначающие ребро между вершинами u и v. Гарантируется, что заданный граф является деревом.

В следующей строке содержится строка, состоящая из n символов английского алфавита от a до t, где i-й (1 ≤ i ≤ n) символ обозначает букву, записанную в i-й вершине дерева.

Выходные данные

Выведите n чисел, где i-е число обозначает количество палиндромных путей, проходящих через вершину i.

Примечание

В первом тестовом примере следующие пути являются палиндромными:

2 - 3 - 4

2 - 3 - 5

4 - 3 - 5

Кроме того, все пути, состоящие из одной вершины, являются палиндромными. А следующие пути палиндромными не являются:

1 - 2 - 3

1 - 2 - 3 - 4

1 - 2 - 3 - 5


Примеры
Входные данныеВыходные данные
1 5
1 2
2 3
3 4
3 5
abcbb
1 3 4 3 3
2 7
6 2
4 3
3 7
5 2
7 2
1 4
afefdfs
1 4 1 1 2 4 2

time 4000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя