쉽게 행복한 나무

루트가 있는 트리에서 각 정점 v의 서브트리에 dist(v,u) > a_u인 정점 u가 남지 않도록, 잘라야 하는 최소 리프 수를 구한다.

어려움8트리DFS그리디동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

정점이 NN개인 트리가 있다. 정점 번호는 1번부터 NN번까지이고, 1번 정점이 루트다. 각 정점과 각 간선에는 숫자가 하나씩 쓰여 있다. 민주는 알고리즘 캠프를 마치고 들른 휴양림에서 이 나무를 보다가, 몇몇 정점이 슬퍼 보인다고 느꼈다. 캠프가 끝나 기분이 좋은 민주는 정점을 몇 개 잘라내서 나무를 행복하게 만들려고 한다.

정점 vv가 슬프다는 것은, vv를 뿌리로 하는 부분 트리 안에 dist(v,u)>au\mathrm{dist}(v, u) > a_u인 정점 uu가 하나 이상 있다는 뜻이다. aua_u는 정점 uu에 쓰인 숫자이고, dist(v,u)\mathrm{dist}(v, u)vv에서 uu로 가는 경로에 있는 간선에 쓰인 숫자의 합이다.

민주는 키보드보다 무거운 물건을 들지 못해서 말단 정점만 자를 수 있다. 말단 정점은 자식이 없는 정점, 즉 이어진 정점이 부모 하나뿐인 정점이다. 1번 정점은 트리에 정점이 하나만 남았을 때에만 말단 정점이다. 말단 정점을 하나 자르면 그 부모가 새로 말단 정점이 되기도 하고, 그러면 그 정점도 이어서 자를 수 있다.

슬픈 정점이 하나도 남지 않을 때까지 자르려면 최소 몇 개를 잘라야 하는지 구하라.

아래 그림에서 1)은 처음 나무이고, 2)부터 6)까지가 차례로 잘려 나가는 정점 5개다.

입력

첫 줄에 정점의 개수 NN이 주어진다 (1N100,0001 \le N \le 100{,}000).

둘째 줄에 1번 정점부터 NN번 정점에 쓰인 숫자 aia_i가 순서대로 주어진다 (1ai1,000,000,0001 \le a_i \le 1{,}000{,}000{,}000).

다음 N1N - 1개 줄에는 간선 정보가 한 줄에 하나씩 주어진다. ii번째 줄의 두 정수 pip_icic_i는 (1piN1 \le p_i \le N, 0ci1,000,000,0000 \le c_i \le 1{,}000{,}000{,}000), (i+1)(i + 1)번 정점이 pip_i번 정점과 간선으로 이어져 있고 그 간선에 쓰인 숫자가 cic_i라는 뜻이다. 1번 정점을 루트로 잡았을 때 pip_i번 정점이 (i+1)(i + 1)번 정점의 부모라는 보장은 없다. 주어지는 간선 N1N - 1개는 항상 트리를 이룬다.

출력

나무가 행복해지도록 잘라야 하는 말단 정점의 최소 개수를 한 줄에 출력한다.