#S0041. 松鼠的新家

松鼠的新家

题目描述

松鼠的新家是一棵树,前几天刚刚装修了新家,新家有 nn 个房间,并且有 n1n−1 根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的。天哪,他居然真的住在“树”上。

松鼠想邀请小熊前来参观,并且还指定一份参观指南,他希望小熊能够按照他的指南顺序,先去 a1a_1​,再去 a2a_2​,最后到 ana_n​,去参观新家。

可是这样会导致重复走很多房间,懒惰的维尼不停地推辞。可是松鼠告诉他,每经过一个房间,他就可以从房间拿一块糖果吃。 小熊是个馋家伙,立马就答应了。现在松鼠希望知道为了保证维尼有糖果吃,他需要在每一个房间各放至少多少个糖果。

当维尼最后到 ana_n 并停止参观时,屋里为他准备了丰盛的大餐,所以不需要为维尼最后一次到达这个屋子时准备糖果(中途路过的时候还是需要的)。

输入格式

第一行输入一个正整数 n(2n3×105)n(2\le n\le 3\times 10^5),表示房间个数。

第二行输入 nn 个正整数,描述松鼠指定的参观顺序。

之后 n1n−1 行,每行两个整数 x,yx,y,表示标号为 xxyy 的房间有树枝相连。

输出格式

输出共 nn 行,第 ii 行输出标号为 ii 的房间至少需要放多少个糖果,才能让小熊有糖果吃。

5
1 4 5 3 2
1 2
2 4
2 3
4 5
1
2
1
2
1
10
1 2 3 4 5 6 7 8 9 10
1 10
1 2
1 3
2 4
2 6
3 5
3 7
8 6
5 9
9
7
7
1
3
3
1
1
1
0
5
4 1 5 3 2
1 2
2 4
2 3
4 5
1
3
1
3
1