Юсеф дал вам корневое дерево$$$^{\text{∗}}$$$ из $$$n$$$ вершин, где корнем является вершина $$$1$$$. Каждой вершине $$$i$$$ присвоено целое число $$$a_i$$$.
Вам нужно разбить множество всех $$$n$$$ вершин ровно на $$$k$$$ непересекающихся подмножеств $$$S_1, S_2, \dots, S_k$$$ (то есть каждая вершина должна оказаться ровно в одном из $$$k$$$ множеств) так, чтобы выполнялось следующее условие:
Оценка подмножества $$$S_i$$$ определяется как максимальное значение $$$a_u$$$ среди всех вершин $$$u$$$ в этом подмножестве. Оценка разбиения — это сумма оценок $$$k$$$ подмножеств. Иными словами, оценка разбиения равна $$$\sum\limits_{i=1}^{k} \max\limits_{u \in S_i} a_u$$$.
Для каждого целого числа $$$k$$$ от $$$1$$$ до $$$n$$$ вычислите максимальную возможную оценку разбиения. Если разбить дерево ровно на $$$k$$$ подмножеств, удовлетворяющих условию, невозможно, выведите для этого значения $$$-1$$$.
$$$^{\text{∗}}$$$Дерево — это связный граф без циклов. Корневое дерево — это дерево, в котором одна вершина выделена и называется корнем.
$$$^{\text{†}}$$$Предок вершины $$$v$$$ — это любая вершина на простом пути от $$$v$$$ к корню, включая корень, но не включая саму вершину $$$v$$$. У корня нет предков.
В первой строке задано целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных.
Первая строка каждого набора входных данных содержит целое число $$$n$$$ ($$$3 \le n \le 2 \cdot 10^5$$$) — количество вершин.
Во второй строке каждого набора входных данных заданы $$$n$$$ целых чисел $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 10^9$$$) — значения вершин.
В третьей строке каждого набора входных данных заданы $$$n-1$$$ целых чисел $$$p_2, p_3, \dots, p_n$$$ ($$$1 \le p_i \lt i$$$), где $$$p_i$$$ — родитель $$$i$$$-й вершины.
Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превосходит $$$2 \cdot 10^5$$$.
Для каждого набора входных данных выведите одну строку, содержащую $$$n$$$ целых чисел, разделённых пробелами. $$$k$$$-е число должно обозначать максимальную возможную оценку разбиения на $$$k$$$ подмножеств. Если разбить дерево на $$$k$$$ подмножеств невозможно, выведите для этого значения $$$-1$$$.
7310 20 301 145 10 15 201 2 241 2 3 41 1 351 2 3 4 51 2 3 491 100 1 90 80 1 2 3 41 1 2 4 3 3 3 365 4 10 3 9 11 2 1 4 1410 10 20 11 2 1
-1 50 60-1 35 45 50-1 6 9 105 9 12 14 15-1 -1 -1 -1 110 200 280 281 282-1 -1 24 28 31 32-1 30 40 41
В первом наборе входных данных:
Заданное дерево в первом наборе входных данных. Во втором наборе входных данных:
Заданное дерево во втором наборе входных данных.