已结束 【提高组】GESP“飞翔杯”第一届季度赛
← 上一题 下一题 →

A4677 | 移动

来源官方 / 2024
时间限制2s
内存限制512MB
通过 / 提交0/0

题目描述

时间限制: 2S

空间限制: 512mb

样例文件: Move


小 T 有一棵 $n$ 个结点的树,初始时每个结点最多只有一枚棋子。

现在有一个结点 $k$ 是根。每次操作你可以选择一个结点,满足该结点有一枚棋子,将这枚棋子移到它的父亲结点上,需要满足它的父亲结点没有棋子,求最多移动次数。
如果没有棋子,则答案为 $0$。

对 $k=1,2,\cdots,n$ 都求出答案。

输入格式

第一行一个正整数 $n$ 表示树的点数。

第二行一个长度为 $n$ 的 01 字符串 $s$,其中第 $i$ 个字符 $s$ 表示初始时,结点 $i$ 是否有棋子。如果 $s_i$ 为 1,则说明有,否则说明没有。

接下来 $n - 1$ 行,第 $i$ 行包含两个整数 $u_i, v_i$,表示树上编号为 $i$ 的边连接结点 $u_i$ 和 $v_i$。

输出格式

一行 $n$ 个整数,其中第 $i$ 个整数表示第 $i$ 个点为根时的最多移动次数。

输入输出样例

输入 #1
6
000101
1 2
1 3
1 4
3 5
2 6
输出 #1
2 2 4 2 6 2
输入 #2
见选手目录下的 move/move2.in 与 move/move2.ans。

该组样例满足数据范围中描述的测试点 1 的限制。
输出 #2

                            
输入 #3
见选手目录下的 move/move3.in 与 move/move3.ans。

该组样例满足数据范围中描述的测试点 4 的限制。
输出 #3

                            
输入 #4
见选手目录下的 move/move4.in 与 move/move4.ans。

该组样例满足数据范围中描述的测试点 6 的限制。
输出 #4

                            
输入 #5
见选手目录下的 move/move5.in 与 move/move5.ans。

该组样例满足数据范围中描述的测试点 13 的限制。
输出 #5

                            
输入 #6
见选手目录下的 move/move6.in 与 move/move6.ans。

该组样例满足数据范围中描述的测试点 18 的限制。
输出 #6

                            
输入 #7
见选手目录下的 move/move7.in 与 move/move7.ans。

该组样例满足数据范围中描述的测试点 20 的限制。
输出 #7

                            
输入 #8
见选手目录下的 move/move8.in 与 move/move8.ans。

该组样例满足数据范围中描述的测试点 22 的限制。
输出 #8

                            
C++ 编辑器
输入
输出