Codeforces Round 899 (Div. 2) |
---|
Закончено |
Дано дерево с $$$n$$$ вершинами, пронумерованными от $$$1$$$ до $$$n$$$. В вершине $$$i$$$ записано целое число $$$a_{i}$$$ для каждого $$$i = 1, 2, \ldots, n$$$. Ваша цель — сделать все $$$a_{i}$$$ одинаковыми, выполнив несколько заклинаний (возможно, ни одного).
Предположим, что корнем дерева выбрана некоторая вершина. Чтобы выполнить заклинание, можно выбрать произвольную вершину $$$v$$$ и произвольное неотрицательное целое число $$$c$$$. Затем для каждой вершины $$$i$$$ в поддереве$$$^{\dagger}$$$ $$$v$$$ нужно заменить $$$a_{i}$$$ на $$$a_{i} \oplus c$$$. Стоимость такого заклинания равна $$$s \cdot c$$$, где $$$s$$$ — число вершин в поддереве. Здесь $$$\oplus$$$ обозначает операцию побитового исключающего ИЛИ.
Пусть $$$m_r$$$ — минимально возможная суммарная стоимость, за которую можно сделать все $$$a_i$$$ равными, в случае если вершина $$$r$$$ выбрана корнем дерева. Найдите $$$m_{1}, m_{2}, \ldots, m_{n}$$$.
$$$^{\dagger}$$$ Пусть вершина $$$r$$$ выбрана корнем дерева. Тогда вершина $$$i$$$ принадлежит поддереву $$$v$$$, если простой путь от $$$i$$$ до $$$r$$$ содержит $$$v$$$.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^{4}$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$1 \le n \le 2 \cdot 10^{5}$$$).
Вторая строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$0 \le a_i < 2^{20}$$$).
Каждая из следующих $$$n-1$$$ строк содержит два целых числа $$$u$$$ и $$$v$$$ ($$$1 \le u, v \le n$$$), означающих наличие ребра между вершинами $$$u$$$ и $$$v$$$.
Гарантируется, что заданные ребра образуют дерево.
Гарантируется, что сумма значений $$$n$$$ по всем наборам входных данных не превосходит $$$2 \cdot 10^{5}$$$.
Для каждого набора входных данных выведите $$$m_1, m_2, \ldots, m_n$$$ на отдельной строке.
243 2 1 01 22 32 41100
8 6 12 10 0
В первом наборе входных данных, чтобы найти $$$m_1$$$, подвесим дерево за вершину $$$1$$$.
Теперь все значения в массиве $$$a$$$ одинаковы, а суммарная стоимость равна $$$3 + 3 + 2 = 8$$$.
Значения $$$m_2$$$, $$$m_3$$$, $$$m_4$$$ находятся аналогично.
Во втором наборе входных данных цель уже достигнута, поскольку в дереве всего одна вершина.
Название |
---|