홍준이와 가능한 집합
시간 제한3초메모리 제한512 MB
가중치가 있는 트리에서 최댓값과 최솟값의 차이가 d 이하인 연결된 공집합 아닌 정점 부분집합의 개수를 센다.
문제
개의 정점으로 이루어진 트리가 있습니다. 번 정점에는 가중치 가 붙어 있습니다. 여기에 정수 가 하나 주어질 때, 다음 조건을 모두 만족하는 트리의 정점 집합 를 "가능한 집합"이라고 합니다.
- 는 공집합이 아닙니다.
- 에 속한 정점은 서로 연결되어 있습니다. 즉, 에 속한 두 정점 와 를 잇는 경로 위의 모든 정점이 에 속해야 합니다.
"가능한 집합" 가 몇 개인지 세는 프로그램을 작성하세요. 답이 매우 커질 수 있으므로 로 나눈 나머지를 출력합니다.
입력
첫째 줄에 와 이 주어집니다. (, )
둘째 줄에 를 나타내는 개의 정수가 부터 순서대로 주어집니다. ()
셋째 줄부터 개의 줄에 걸쳐 트리의 간선을 나타내는 두 정수 와 가 주어집니다. ()
출력
가능한 집합의 개수를 로 나눈 나머지를 첫째 줄에 출력합니다.
힌트
첫 번째 예제에서 가능한 집합은 {1}, {2}, {3}, {4}, {1, 2}, {1, 3}, {3, 4}, {1, 3, 4}의 여덟 가지입니다.