행복한 나무

남은 정점 중 경로 거리가 그 정점의 값보다 큰 자손이 없도록, 잘라야 하는 리프의 최소 개수를 구한다.

보통6트리DFS그리디아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

정점이 NN개인 트리가 있다. 정점 번호는 1번부터 NN번까지이고, 1번 정점이 루트다. 각 정점과 각 간선에는 숫자가 하나씩 쓰여 있다. 정점 uu에 쓰인 숫자를 aua_u라 하고, 정점 vv에서 정점 uu로 가는 경로 위 간선에 쓰인 숫자의 합을 dist(v,u)\mathrm{dist}(v, u)라 하자.

정점 vv가 슬프다는 것은 vv를 루트로 하는 부분 트리 안에 dist(v,u)>au\mathrm{dist}(v, u) > a_u인 정점 uu가 하나 이상 있다는 뜻이다. 슬픈 정점이 하나도 없는 트리를 행복한 트리라고 한다.

민주는 키보드보다 무거운 물건을 들 수 없어서 말단 정점만 자를 수 있다. 말단 정점은 자식이 없는 정점, 즉 이어진 정점이 부모 하나뿐인 정점이다. 루트는 트리에 정점이 1개만 남았을 때만 말단 정점이 된다. 정점을 자르면 그 정점은 트리에서 사라지고, 그 결과 새로 말단이 된 정점을 이어서 자를 수 있다.

트리가 행복해질 때까지 잘라야 하는 정점의 최소 개수를 구하라.

아래 그림 1)의 트리에서는 2)부터 6)까지 표시한 정점 5개를 잘라야 한다.

입력

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

둘째 줄에 1번 정점부터 NN번 정점까지 쓰인 숫자 a1,a2,,aNa_1, a_2, \ldots, a_N(1ai10000000001 \le a_i \le 1\,000\,000\,000)이 공백으로 구분되어 주어진다.

이어지는 N1N - 1개의 줄 중 ii번째 줄에는 두 정수 pip_i(1piN1 \le p_i \le N)와 cic_i(1000000000ci1000000000-1\,000\,000\,000 \le c_i \le 1\,000\,000\,000)가 주어진다. (i+1)(i + 1)번 정점과 pip_i번 정점이 간선으로 이어져 있고, 그 간선에 쓰인 숫자가 cic_i라는 뜻이다. 주어지는 간선은 항상 트리를 이룬다.

pip_ii+1i + 1보다 큰 경우도 있으므로, 부모와 자식 관계는 1번 정점을 루트로 두고 직접 정해야 한다.

출력

트리가 행복해지기 위해 잘라야 하는 말단 정점의 최소 개수를 한 줄에 출력한다.