Coding is the closest thing we have to superpower !
描述
给定一棵n个结点的树,以1为根,每个点有点权a_i,每条边有边权。
假如u的子树中存在一个点v (u \ne v),使得dist(u, v)<=a_v,则称u控制v。
dist(u,v)表示u到v的路径上的边权之和, a_v是v的点权。
现在需要算出每个点各控制了几个点。
输入
第一行输入一个整数n (1 \le n \le 2*10^5)。
第二行输入n个整数a_1, a_2, …, a_n (1 \le a_i \le 10^9),表示每个点的点权。
接下来n−1行每行两个整数p_i (1 \le p_i \le i + 1), c_i (1 \le c_i \le 10^9)表示i + 1 (1 \le i \lt n)与p_i之间有一条边权为c_i的边。
输出
输出n个整数,第i个整数表示i节点控制的点的数量。
样例
输入
5 2 5 1 4 6 1 7 1 1 3 5 3 6
输出
1 0 1 0 0
标签