만드는 중입니다

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

최소 신장 트리

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

요약
각 간선이 가중치 1부터 k 중 하나를 가지거나 없는 무작위 그래프에서, 연결되고 최소 신장 트리 가중치가 s인 확률을 s마다 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 확률, 조합론, 그래프
정답자
아직 제출이 없습니다

문제

어느 날 Subconscious는 지난 대회에서 겪었던 끔찍한 경험이 떠오르는 문제를 마주했다. 그 대회에서 가장 쉬운 문제는 무작위로 생성된 그래프에서 최소 신장 트리의 개수를 세는 것이었다.

이제 11부터 nn까지 번호가 붙은 nn개의 정점으로 이루어진 그래프가 있다. 정점 쌍 uu, vv (1≤u<v≤n1 \le u < v \le n)마다 두 정점 사이에 간선이 없을 확률은 p0/100p_0/100, 가중치가 1인 간선이 있을 확률은 p1/100p_1/100, 가중치가 2인 간선이 있을 확률은 p2/100p_2/100, 이하 같은 방식으로 가중치가 kk인 간선이 있을 확률은 pk/100p_k/100이다. 여기서 kk는 간선의 최대 가중치다. 모든 간선은 서로 독립적으로 생성된다.

그래프가 연결되지 않을 수도 있으므로 최소 신장 트리 가중치의 기댓값을 구하는 것이 아니다. 대신 n−1n - 1 이상 k(n−1)k(n - 1) 이하의 각 정수 ss에 대해, 그래프가 연결되어 있고 최소 신장 트리의 가중치가 정확히 ss일 확률을 구하라.

Subconscious는 이 문제를 풀었다고 생각하지만 자신의 풀이가 맞는지 확신하지 못한다. 그래서 답을 1,000,000,0071,000,000,007로 나눈 나머지 기준으로 당신과 함께 확인하려 한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 첫 줄에는 테스트 케이스의 개수 TT (1≤T≤2001 \le T \le 200)가 주어진다.

각 테스트 케이스의 첫 줄에는 정점의 개수 nn (2≤n≤402 \le n \le 40)과 간선의 최대 가중치 kk (1≤k≤41 \le k \le 4)가 주어진다. 다음 줄에는 음이 아닌 정수 p0,p1,…,pkp_0, p_1, \ldots, p_k가 공백으로 구분되어 주어지며, ∑i=0kpi=100\sum_{i=0}^{k} p_i = 100이다.

n>10n > 10인 테스트 케이스는 최대 20개이고, n>20n > 20인 테스트 케이스는 최대 2개임이 보장된다.

출력

각 테스트 케이스마다 (k−1)(n−1)+1(k - 1)(n - 1) + 1개의 정수를 한 줄에 출력한다. ii번째 정수는 그래프가 연결되어 있고 최소 신장 트리의 가중치가 정확히 n−2+in - 2 + i인 확률을 1,000,000,0071,000,000,007을 법으로 한 나머지다.

더 정확히 말하면, 확률을 기약분수 p/qp/q로 나타냈을 때 q⋅r≡p(mod1000000007)q \cdot r \equiv p \pmod{1000000007}을 만족하는 0 이상의 가장 작은 정수 rr을 출력한다. 모든 테스트 케이스에서 그러한 rr이 항상 존재한다고 가정해도 된다.

예제1

  1. 예제 1

    입력
    2
    3 1
    50 50
    3 2
    0 50 50
    
    예상 출력
    500000004
    500000004 375000003 125000001