QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 256 MB Total points: 100

#5659. Watching Cowflix

统计

Note: The time limit for this problem is 3s, 1.5x the default.

Bessie likes to watch shows on Cowflix, and she watches them in different places. Farmer John's farm can be represented as a tree with $N$ ($2 \leq N \leq 2\cdot 10^5$) nodes, and for each node, either Bessie watches Cowflix there or she doesn't. It is guaranteed that Bessie watches Cowflix in at least one node.

Unfortunately, Cowflix is introducing a new subscription model to combat password sharing. In their new model, you can choose a connected component of size $d$ in the farm, and then you need to pay $d + k$ moonies for an account that you can use in that connected component. Formally, you need to choose a set of disjoint connected components $c_1, c_2, \dots, c_C$ so that every node where Bessie watches Cowflix must be contained within some $c_i$. The cost of the set of components is $\sum_{i=1}^{C} (|c_i|+k)$, where $|c_i|$ is the number of nodes in component $c_i$. Nodes where Bessie does not watch Cowflix do not have to be in any $c_i$.

Bessie is worried that the new subscription model may be too expensive for her given all the places she visits and is thinking of switching to Mooloo. To aid her decision-making, calculate the minimum amount she would need to pay to Cowflix to maintain her viewing habits. Because Cowflix has not announced the value of $k$, calculate it for all integer values of $k$ from $1$ to $N$.

INPUT FORMAT (input arrives from the terminal / stdin):

The first line contains $N$.

The second line contains a bit string $s_1s_2s_3 \dots s_N$ where $s_i = 1$ if Bessie watches Cowflix at node $i$.

Then $N-1$ lines follow, each containing two integers $a$ and $b$ ($1 \leq a, b \leq N$), which denotes an edge between $a$ and $b$ in the tree.

OUTPUT FORMAT (print output to the terminal / stdout):

The answers for each $k$ from $1$ to $N$ on separate lines.

SAMPLE INPUT:

5
10001
1 2
2 3
3 4
4 5

SAMPLE OUTPUT:

4
6
8
9
10
For $k\le 3$, it's optimal to have two accounts: $c_1 = \{1\}, c_2 = \{5\}$. For $k\ge 3$, it's optimal to have one account: $c_1 = \{1, 2, 3, 4, 5\}$.

SAMPLE INPUT:

7
0001010
7 4
5 6
7 2
5 1
6 3
2 5

SAMPLE OUTPUT:

4
6
8
9
10
11
12

SCORING:

  • Inputs 3-5: $N\le 5000$
  • Inputs 6-8: $i$ is connected to $i+1$ for all $i\in [1,N)$.
  • Inputs 9-19: $N\le 10^5$
  • Inputs 20-24: No additional constraints.

Problem credits: Danny Mittal

About Issues

We understand that our problem archive is not perfect. If you find any issues with the problem, including the statement, scoring configuration, time/memory limits, test cases, etc.

You may use this form to submit an issue regarding the problem. A problem moderator will review your issue and proceed it properly.

STOP! Before you submit an issue, please READ the following guidelines:

  1. This is not a place to publish a discussion, editorial, or requests to debug your code. Your issue will only be visible by you and problem moderators. Other users will not be able to view or reply your issues.
  2. Do not submit duplicated issues. If you have already submitted one, please wait for an moderator to review it. Submitting multiple issues will not speed up the review process and might cause your account to be banned.
  3. Issues must be filed in English or Chinese only.
  4. Be sure your issue is related to this problem. If you need to submit an issue regarding another problem, contest, category, etc., you should submit it to the corresponding page.

Active Issues 0

No issues in this category.

Closed/Resolved Issues 0

No issues in this category.