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

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