#PD261011C. 中枢 (hub)

中枢 (hub)

题目描述

给定一棵 nn 个节点的树。每个节点 ii 上可能插着红旗和蓝旗:ai=1a_i=1 表示有红旗,bi=1b_i=1 表示有蓝旗。一个节点可以同时插两种旗,也可以都不插。

对每一对节点 x,yx,y(1≤x<y≤n1 \le x < y \le n),记树上 xx 到 yy 的路径(包含两端)为 SS。

对于 SS 中不是端点的节点 ii,节点 ii 把路径分成两段:xx 到 ii 之间的部分(含 xx,不含 ii)称为 xx 侧;ii 到 yy 之间的部分(不含 ii,含 yy)称为 yy 侧。

如果其中一侧至少有一个节点插着红旗,并且另一侧至少有一个节点插着蓝旗,就称这条路径关照了节点 ii。红旗可以在 xx 侧,也可以在 yy 侧。如果两种方向都满足条件,这条路径对节点 ii 仍只计数一次。

注意:节点 ii 自己身上的旗子不起作用,路径的端点不会被这条路径关照。

对每个节点 ii,求有多少条路径关照了它。

输入格式

从文件 hub.in 中读入数据。

第一行一个整数 nn。

接下来 nn 行,第 ii 行两个整数 ai,bia_i,b_i。

接下来 n−1n-1 行,每行两个整数 u,vu,v,表示树上的一条边。

输出格式

输出到文件 hub.out 中。

输出一行 nn 个整数,第 ii 个数表示关照节点 ii 的路径条数。

样例1输入

6
1 0
0 1
0 0
1 1
0 0
0 1
1 2
2 3
3 4
3 5
5 6

样例1输出

0 2 4 0 2 0

样例1解释

树的形状是 1−2−31-2-3,33 再连向 44 和 55,55 连向 66。红旗在节点 1,41,4,蓝旗在节点 2,4,62,4,6。

下表列出所有满足条件的“路径与被关照节点”。左右两侧均不包含被关照的节点 ii。

ii (x,y)(x,y) 路径 xx 侧 xx 侧的旗 yy 侧 yy 侧的旗
2 (1,4)(1,4) 1→2→3→41 \to 2 \to 3 \to 4 {1}\{1\} 红 {3,4}\{3,4\} 红、蓝
(1,6)(1,6) 1→2→3→5→61 \to 2 \to 3 \to 5 \to 6 {3,5,6}\{3,5,6\} 蓝
3 (1,4)(1,4) 1→2→3→41 \to 2 \to 3 \to 4 {1,2}\{1,2\} 红、蓝 {4}\{4\} 红、蓝
(1,6)(1,6) 1→2→3→5→61 \to 2 \to 3 \to 5 \to 6 {5,6}\{5,6\} 蓝
(2,4)(2,4) 2→3→42 \to 3 \to 4 {2}\{2\} 蓝 {4}\{4\} 红、蓝
(4,6)(4,6) 4→3→5→64 \to 3 \to 5 \to 6 {4}\{4\} 红、蓝 {5,6}\{5,6\} 蓝
5 (1,6)(1,6) 1→2→3→5→61 \to 2 \to 3 \to 5 \to 6 {1,2,3}\{1,2,3\} {6}\{6\}
(4,6)(4,6) 4→3→5→64 \to 3 \to 5 \to 6 {4,3}\{4,3\}

节点 1,4,61,4,6 都是叶子,只能做路径的端点,所以答案为 00。节点 2,3,52,3,5 被关照的次数分别为 2,4,22,4,2,与样例输出一致。

样例2

见选手下发文件夹中的 hub2.in 与 hub2.ans。

样例3

见选手下发文件夹中的 hub3.in 与 hub3.ans。

数据范围

对于所有测试数据,保证 2≤n≤5×1052 \le n \le 5 \times 10^5,ai,bi∈{0,1}a_i,b_i \in \{0,1\}。

本题共 2424 个测试点,采用捆绑测试。只有通过一个子任务内的全部测试点,才能获得该子任务的全部分数;否则该子任务得 00 分。

子任务编号 测试点编号 分值 n≤n \le 特殊性质
1 1∼41 \sim 4 10 200 无
2 5∼65 \sim 6 15 3000
3 7∼107 \sim 10 5×1055 \times 10^5 A
4 11∼1311 \sim 13 5 B
5 14∼1614 \sim 16 20 C
6 17∼2417 \sim 24 35 无

特殊性质 A:树是一条链,即第 ii 条边满足 u=i,v=i+1u=i,v=i+1。

特殊性质 B:树是菊花,即每条边都满足 u=1u=1。

特殊性质 C:所有 bi=1b_i=1。