만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

밀집 부분 그래프

시간 제한3초메모리 제한512 MB

요약
정점 가중치가 있는 차수 5 이하의 트리에서, 연결된 부분집합 밀도의 최댓값이 x 이하인 정점 집합 L의 개수를 셉니다.
난이도

어려움10점 중 10점

유형
트리, 이분 탐색, 동적 계획법, 분할 정복
정답자
아직 제출이 없습니다

문제

정점이 nn개인 트리가 주어진다. 각 정점 vv에는 가중치 ava_v가 있고, 모든 정점의 차수는 최대 5이다.

정점 집합 SS의 밀도는 다음과 같이 정의한다.

∑v∈Sav∣S∣.\frac{\sum_{v \in S}{a_v}}{|S|}.

트리의 정점 집합 LL을 생각한다. LL의 아름다움은 LL의 부분집합 SS 중 정점을 두 개 이상 포함하고 유도 부분 그래프가 연결된 것들의 밀도 최댓값이다. 그런 SS가 없으면 아름다움은 0이다.

LL을 고르는 방법은 2n2^n가지이다. 아름다움이 xx 이하인 LL은 몇 개인지 구하라. 답이 매우 클 수 있으므로 1 000 000 0071\,000\,000\,007로 나눈 나머지를 출력한다.

입력

첫 줄에 테스트 케이스의 개수 TT (1≤T≤301 \le T \le 30)가 주어진다.

각 테스트 케이스의 첫 줄에는 정수 nn (2≤n≤35 0002 \le n \le 35\,000)과 xx (0≤x≤35 0000 \le x \le 35\,000)가 주어진다.

다음 줄에는 nn개의 정수 a1,a2,…,ana_1, a_2, \dots, a_n (0≤ai≤35 0000 \le a_i \le 35\,000)이 주어진다.

이어서 n−1n-1개의 줄에 정점 uu와 vv (1≤u,v≤n1 \le u, v \le n)를 잇는 간선이 하나씩 주어진다. 주어지는 그래프는 트리이며, 각 정점의 차수는 최대 5이다.

출력

각 테스트 케이스마다 아름다움이 xx 이하인 부분 집합 LL의 개수를 1 000 000 0071\,000\,000\,007로 나눈 나머지를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    2
    5 0
    1 1 1 1 1
    1 2
    2 3
    3 4
    4 5
    3 2
    2 1 3
    1 2
    1 3
    
    예상 출력
    13
    6