Universal Cup Judging System

Universal Cup

時間限制: 6.0 s 記憶體限制: 1024 MB 總分: 100
统计

在百字节森林(Hundred Bytes Wood)的中央生长着一棵不同寻常的树,树上栖息着会咆哮的蜗牛。这棵树由 $n$ 个顶点组成,编号从 $1$ 到 $n$,它们通过 $n-1$ 条边连接成一棵连通图。起初,树的每个顶点上最多有一只雄性咆哮蜗牛。

某一时刻,一只雌性蜗牛会出现在树的某个顶点上并开始咆哮。雌性蜗牛每咆哮一次,就有一只雄性蜗牛会沿着边向靠近雌性蜗牛的相邻顶点移动。然而,如果目标顶点已经有另一只雄性蜗牛,或者雄性蜗牛已经与雌性蜗牛处于同一顶点,则该雄性蜗牛无法移动。如果下一次咆哮后没有任何雄性蜗牛能够移动,雌性蜗牛就会停止咆哮。

给定栖息着咆哮蜗牛的树的描述。对于每个顶点,你还会获得关于该顶点是否有雄性蜗牛的信息。请计算如果雌性蜗牛位于某个顶点,她最多能咆哮多少次。我们假设雄性蜗牛的移动方式是使咆哮次数最大化。

输入格式

第一行包含一个整数 $n$ ($1 \le n \le 2 \cdot 10^5$),表示树的顶点数。

第二行包含一个由 $n$ 个字符 '0' 和 '1' 组成的字符串。如果第 $i$ 个字符为 '1',则表示树的第 $i$ 个顶点上有一只雄性蜗牛。如果第 $i$ 个字符为 '0',则表示树的第 $i$ 个顶点上没有雄性蜗牛。

接下来的 $n-1$ 行,每行包含两个整数 $a_i$ 和 $b_i$ ($1 \le a_i, b_i \le n; a_i \neq b_i$),表示树的顶点 $a_i$ 和 $b_i$ 之间有一条边。

输出格式

输出一行,包含 $n$ 个整数;第 $i$ 个整数表示如果雌性蜗牛位于第 $i$ 个顶点,她所能进行的最大咆哮次数。

样例

输入 1

5
10101
1 2
2 3
2 4
4 5

输出 1

2 2 2 3 3

说明

样例测试中的树如下图所示。雄性蜗牛位于阴影顶点中。

如果雌性蜗牛在第一个顶点,她最多可以咆哮两次,例如先吸引第三个顶点的雄性蜗牛到第二个顶点,然后吸引第五个顶点的雄性蜗牛到第四个顶点:

如果雌性蜗牛在第四个顶点,只要第五个顶点的雄性蜗牛不移动,她最多可以咆哮三次:

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.