小A有一棵 n 个结点的树,这些结点依次以 1, 2, \ldots, n 标号。
小A想在这棵树上漫步。具体来说,小A会从树上的某个结点出发,每一步可以移动到与当前结点相邻的结点,并且小A只会在偶数步(可以是零步)后结束漫步。
现在小A想知道,对于树上的每个结点,从这个结点出发开始漫步,经过偶数步能结束漫步的结点有多少个(可以经过重复的节点)。
第一行,一个正整数 n 。
接下来 n - 1 行,每行两个整数 u_i, v_i ,表示树上有一条连接结点 u_i 和结点 v_i 的边。
一行, n 个整数,第 i 个整数表示从结点 i 出发开始漫步,能结束漫步的结点数量。
3 1 3 2 3
2 2 1
4 1 3 3 2 4 3
3 3 1 3
对于40%的测试点,保证 1 \leq n \leq 10^4。
对于所有测试点,保证 1 \leq n \leq 2 \times 10^5。
2025年GESP 3月认证C++六级真题