独特的城市
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

JOI国有N个城市,城市从1到N编号。这些城市被N-1条双向道路连接,第i条路连接两个城市A_iB_i。从任何城市出发,可以到达所有城市。
JOI国有些特产,每种特产的编号都在1到M之间(包括1和M),但是1到M的某些整数可能不代表JOI国的特产。JOI国的每个城市都产一种特产。j城产的特产是C_j。多个城市可能产相同的特产。
我们定义两个城市之间的距离为从一个城市到另一个城市需要经过的最少道路数,对于城市,我们定义城市独特的城市当且仅当对于任何一个城市,x与y间的距离不等于x与z之间的距离。
JOI国交通部部长K先生想知道对于城市独特的城市一共能产多少种特产。
给出JOI国的道路信息与每个城市产的特产,写一个程序计算对于每个城市的独特的城市,一共能产多少种特产。

输入描述:

第一行两个整数N,M,意义如题目描述。
接下来N-1行,每行两个整数A_i,B_i,意义如题目描述。
最后一行N个正整数,第j个为C_j,意义如题目描述。

输出描述:

输出N行,第行表示对于城市的独特的城市一共能产多少种特产。
示例1

输入

复制
5 4
1 2
2 3
3 4
3 5
1 2 1 2 4

输出

复制
2
0
1
1
1

说明

对于城市1,它的独特城市是城市2,3,城市2产特产2,城市3产特产1,一共产两种特产,因此答案是2;
对于城市2,没有独特城市,因此输出0;
对于城市3,它的独特城市是城市1,城市1产特产1,因此答案是1;
对于城市4,它的独特城市是城市1,3,城市1产特产1,城市3产特产1,一共产一种特产,因此答案是1;
对于城市5,它的独特城市是城市1,3,城市1产特产1,城市3产特产1,一共产一种特产,因此答案是1;
注意,没有编号为3的特产。
示例2

输入

复制
7 1
1 2
2 3
3 4
4 5
5 6
6 7
1 1 1 1 1 1 1

输出

复制
1
1
1
0
1
1
1
示例3

输入

复制
10 10
2 6
5 8
10 8
1 4
10 6
4 5
10 7
6 9
3 7
1 2 3 4 5 6 7 8 9 10

输出

复制
4
3
4
2
0
2
2
0
3
2
示例4

输入

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

输出

复制
2
0
1
1
1
1
1
0
0
1
2
0
1
1
2
0
2
1
2
3
0
0

备注:

对于全部数据,,并且保证从一个城市永远可以通过道路到达任何一个城市。

CC-BY-SA,感谢LOJ分享,译文来自 https://loj.ac/problem/3014