EduBrick

B. Сколько потомков

3000 мс · 256 МБ · всё или ничего

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

Через времена входа и выхода это считается без второго обхода вовсе. Для вершины vv отрезок [tin[v],tout[v]][tin[v], tout[v]] содержит по два тика на каждую вершину поддерева, включая саму vv. Значит

потомков(v)=tout[v]−tin[v]−12.\text{потомков}(v) = \frac{tout[v] - tin[v] - 1}{2}.

Проверьте на листе: tout=tin+1tout = tin + 1, и формула даёт ноль.

Считать при выходе — сумму по сыновьям плюс единица — тоже правильно и ничем не хуже. Формула через времена приведена ради того, чтобы стало окончательно понятно, что именно измеряют эти часы.

Формат ввода

Первая строка содержит число nn (1≤n≤1051 \le n \le 10^5).

Во второй строке nn чисел: родитель ii-й вершины или 00 для корня. Корень ровно один.

Формат вывода

Одна строка из nn чисел.

Примеры

ввод
6
0 1 1 2 3 3
вывод
5 1 2 0 0 0
Войдите, чтобы отправлять решения.