루트가 있는 트리에서 각 정점 v의 서브트리에 dist(v,u) > a_u인 정점 u가 남지 않도록, 잘라야 하는 최소 리프 수를 구한다.
어려움8트리DFS그리디동적 계획법아직 제출이 없습니다시간 제한2초메모리 제한512 MB정점이 N개인 트리가 있다. 정점 번호는 1번부터 N번까지이고, 1번 정점이 루트다. 각 정점과 각 간선에는 숫자가 하나씩 쓰여 있다. 민주는 알고리즘 캠프를 마치고 들른 휴양림에서 이 나무를 보다가, 몇몇 정점이 슬퍼 보인다고 느꼈다. 캠프가 끝나 기분이 좋은 민주는 정점을 몇 개 잘라내서 나무를 행복하게 만들려고 한다.
정점 v가 슬프다는 것은, v를 뿌리로 하는 부분 트리 안에 dist(v,u)>au인 정점 u가 하나 이상 있다는 뜻이다. au는 정점 u에 쓰인 숫자이고, dist(v,u)는 v에서 u로 가는 경로에 있는 간선에 쓰인 숫자의 합이다.
민주는 키보드보다 무거운 물건을 들지 못해서 말단 정점만 자를 수 있다. 말단 정점은 자식이 없는 정점, 즉 이어진 정점이 부모 하나뿐인 정점이다. 1번 정점은 트리에 정점이 하나만 남았을 때에만 말단 정점이다. 말단 정점을 하나 자르면 그 부모가 새로 말단 정점이 되기도 하고, 그러면 그 정점도 이어서 자를 수 있다.
슬픈 정점이 하나도 남지 않을 때까지 자르려면 최소 몇 개를 잘라야 하는지 구하라.
아래 그림에서 1)은 처음 나무이고, 2)부터 6)까지가 차례로 잘려 나가는 정점 5개다.

첫 줄에 정점의 개수 N이 주어진다 (1≤N≤100,000).
둘째 줄에 1번 정점부터 N번 정점에 쓰인 숫자 ai가 순서대로 주어진다 (1≤ai≤1,000,000,000).
다음 N−1개 줄에는 간선 정보가 한 줄에 하나씩 주어진다. i번째 줄의 두 정수 pi와 ci는 (1≤pi≤N, 0≤ci≤1,000,000,000), (i+1)번 정점이 pi번 정점과 간선으로 이어져 있고 그 간선에 쓰인 숫자가 ci라는 뜻이다. 1번 정점을 루트로 잡았을 때 pi번 정점이 (i+1)번 정점의 부모라는 보장은 없다. 주어지는 간선 N−1개는 항상 트리를 이룬다.
나무가 행복해지도록 잘라야 하는 말단 정점의 최소 개수를 한 줄에 출력한다.