EduBrick

E. Что останется после удаления

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

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

Части - это поддеревья детей и всё остальное:

ответ(v)=max⁡(max⁡csize[c], n−size[v])\text{ответ}(v) = \max\Bigl( \max_c size[c],\ n - size[v] \Bigr)

Второе слагаемое - «вверх»; для корня оно равно нулю и максимума не портит.

Одного обхода хватает: ни смена корня, ни два максимума тут не нужны - достаточно размеров поддеревьев.

Вершина, у которой этот ответ наименьший, называется центроидом. Известно, что для неё ответ не превосходит n/2n/2, и что центроидов не больше двух. Проверять это в задаче не надо, но полезно посмотреть на свои ответы и убедиться, что так и получается.

Для дерева из одной вершины ответ ноль.

Формат ввода

В первой строке - число nn (1≤n≤1051 \le n \le 10^5).

В следующих n−1n - 1 строках - рёбра дерева.

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

Выведите nn чисел - для каждой вершины размер наибольшей оставшейся части.

Примеры

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