A35245.移动

省选/NOI-

官方

通过率:0%

时间限制:2.00s

内存限制:512MB

题目描述

时间限制: 2S
空间限制: 512mb
样例文件: Move

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

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

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

输入格式

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

第二行一个长度为 nn 的 01 字符串 ss,其中第 ii 个字符 ss 表示初始时,结点 ii 是否有棋子。如果 sis_i1,则说明有,否则说明没有。

接下来 n1n - 1 行,第 ii 行包含两个整数 ui,viu_i, v_i,表示树上编号为 ii 的边连接结点 uiu_iviv_i

输出格式

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

输入输出样例

  • 输入#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

说明/提示

对于所有的测试数据,保证:

  • 1n5×1051 \leq n \leq 5\times 10^5
  • 对于任意的 i(1in1)i(1 \leq i \leq n - 1),都有 1ui,vin1 \leq u_i, v_i \leq n,且构成一颗合法的树。
测试点编号 nn\le 特殊性质
131\sim 3 1010
4,54,5 300300
66 20002000
797\sim 9 70007000
101210\sim 12 5×1045\times 10^4
131613\sim 16 10510^5
1717 3×1053\times 10^5
18,1918,19 5×1055\times 10^5 A
20,2120,21 5×1055\times 10^5 B
222422\sim 24 5×1055\times 10^5 C
2525 5×1055\times 10^5
  • 特殊性质 A:保证 i[1,n1]Z\forall i\in [1, n-1]\cap \mathbb{Z},满足 iii+1i+1 有边;
  • 特殊性质 B:保证 i[2,n]Z\forall i\in [2, n]\cap \mathbb{Z},满足 11ii 有边;
  • 特殊性质 C:保证树的生成方式形如,对于结点 i[2,n]i\in [2,n],在 [1,i1][1,i-1] 内等概率随机一个点 pp,将 i,pi,p 连一条边。
首页