각 정점에 음이 아닌 가중치가 있고 상한 k가 주어진 트리에서, 잘라낸 각 조각의 가중치 합이 k 이하가 되도록 잘라야 하는 간선 수의 최솟값을 구한다.
크레쇼는 동네 농장에서 매운 고추를 한 묶음 샀다. 고추는 끈으로 서로 엮여 이른바 화환을 이룬다. 이 문제에서 화환은 고추 nnn개와 끈 n−1n-1n−1개로 이루어진다. 끈 하나는 서로 다른 고추 두 개를 잇고, 화환 안의 어떤 두 고추도 끈을 따라 직접 또는 간접적으로 연결되어 있다. 즉 고추와 끈은 트리를 이룬다. 크레쇼는 가위질 한 번으로 끈 하나를 잘라 화환 하나를 더 작은 화환 두 개로 나눌 수 있고, 나뉜 화환을 같은 방법으로 다시 나눌 수도 있다. 아무것과도 연결되지 않은 고추 하나도 화환이다.
그림 1: 처음 두 예제의 화환과 최적의 절단.
고추 하나의 맵기는 스코빌 척도로 재며 음이 아닌 정수로 나타낸다. 화환의 맵기는 그 화환에 든 고추의 맵기를 모두 더한 값이다. 크레쇼는 정보 올림피아드가 끝난 뒤 고등학생들의 점심을 맵게 만들고 싶은데, 평범한 고등학생은 맵기가 kkk 이하인 화환까지는 의사와 청소년 담당 변호사를 부르지 않고 먹을 수 있다는 사실을 안다.
처음 화환을 맵기가 모두 kkk 이하인 화환들로 나누는 데 필요한 최소 절단 횟수를 구하시오.
첫째 줄에 고추의 수 nnn과 화환 하나에 허용되는 최대 맵기 kkk가 주어진다. 고추에는 1부터 nnn까지 번호가 붙어 있다. 둘째 줄에 정수 nnn개 h1,h2,…,hnh_1, h_2, \ldots, h_nh1,h2,…,hn이 주어진다. hjh_jhj는 고추 jjj의 맵기다. 이어지는 n−1n-1n−1개 줄에는 각각 서로 다른 두 정수 xxx, yyy (1≤x,y≤n1 \le x, y \le n1≤x,y≤n)가 주어진다. 처음 화환에서 고추 xxx와 고추 yyy가 끈 하나로 직접 연결되어 있다는 뜻이다. 고추와 끈은 문제에서 설명한 대로 트리를 이룬다.
최소 절단 횟수를 출력한다.
모든 서브태스크에서 n≥2n \ge 2n≥2이고 0≤h1,h2,…,hn≤k≤3 000 0000 \le h_1, h_2, \ldots, h_n \le k \le 3\,000\,0000≤h1,h2,…,hn≤k≤3000000이다.