#L3632. 「2021 集训队互测」Lovely Dogs

    ID: 4410 传统题 4000ms 512MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>组合数学莫比乌斯反演树结构树上启发式合并数据结构难度NOI/NOI+集训队互测

「2021 集训队互测」Lovely Dogs

题目描述

nn 只可爱的狗子,第 ii 只可爱的狗子的可爱值为 aia_i。可爱的狗子们通过一些姐妹关系形成了一个树状结构。在 11 号狗子是树的根的情况下,ii 号狗子的子树内的狗子就是 ii 号狗子的妹妹们。

若一只可爱的狗子 ii 在玩游戏,那么她会对游戏产生 fd(ai2)f_d(a_i^2) 的欢乐值。若两只可爱的狗子 i,ji,j 在一起玩游戏,那么她们会对游戏产生 fd(aiaj)f_d(a_ia_j) 的欢乐值。一次游戏的欢乐值是所有玩游戏的狗子和狗子对,所贡献的欢乐值的和。

给定常数 dd。我们将 zz 拆解成一些质数的幂次的乘积 z=ipikiz=\prod_ip_i^{k_i},我们定义:

fd(z)=i(1)ki[kid]f_d(z)=\prod_i(-1)^{k_i}[k_i\le d]

现在对于每只可爱的狗子 xx,她打算和她的妹妹们一起玩游戏,希望你能帮她们计算出此次游戏的欢乐值。

输入格式

第一行两个整数 n,dn,d

接下来 n1n-1 行每行描述一条边,第 ii 条边为 ui,viu_i,v_i。保证这 n1n-1 条边会构成一棵树。

接下来一行 nn 个数,第 ii 个数代表 aia_i,保证所有的 aia_i 构成一个 11nn 的排列。

输出格式

输出一共 nn 行,每行一个数。第 ii 行的数代表编号为 ii 的点(狗子)的答案。

样例 1

输入

3 2
1 2
1 3
1 2 3

输出

2
1
1

解释: 1 号狗子的答案:$f_d(1^2)+f_d(2^2)+f_d(3^2)+f_d(1\times 2)+f_d(1\times 3)+f_d(2\times 3)=1+1+1-1-1+1=2$。

2 号狗子的答案:fd(22)=1f_d(2^2)=1

3 号狗子的答案:fd(32)=1f_d(3^2)=1

样例 2

输入

20 1
15 2
4 15
9 13
16 19
2 5
13 2
19 2
8 14
1 12
18 7
10 5
3 8
20 19
14 2
7 19
18 6
8 11
17 8
19 1
14 3 5 2 9 4 18 16 1 20 13 7 6 12 19 17 10 15 8 11

输出

2
2
0
0
0
0
0
0
1
0
0
0
2
0
1
0
0
0
3
0

数据范围与提示

对于 100%100\% 的数据满足 $1\le n\le 2\times 10^5,1\le d\le 20,1\le a_i,u_i,v_i\le n$,保证所有的 aia_i 构成一个 11nn 的排列。

子任务编号 子任务分值 特殊数据范围
subtask 1 10 n500n\le 500
subtask 2 n2000n\le 2000
subtask 3 d=20d=20
subtask 4 20 d=1,i,ui=1,vi=i+1d=1,\forall i,u_i=1,v_i=i+1
subtask 5 15 i,ui=1,vi=i+1\forall i,u_i=1,v_i=i+1
subtask 6 10 n50000n\le 50000
subtask 7 25 n2×105n\le 2\times 10^5