페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#10434

인트라넷 20s 1024MB

문제

Apricot Rules LLC는 새로운 단순화된 네트워킹 프로토콜을 개발 중이며, 자신들의 라우팅 알고리즘을 과시하고 싶어 한다. 그들의 설계에서 네트워크는 1번부터 \mathbf{M}번까지 번호가 매겨진 \mathbf{M}대의 기계로 이루어져 있고, 모든 기계 쌍은 직접 링크로 연결되어 있다. 각 링크에는 1 이상 (\mathbf{M} \times (\mathbf{M} - 1) / 2) 이하의 서로 다른 정수 우선순위(priority)가 하나씩 부여되며, 각 기계는 그 우선순위에 따라 트래픽을 라우팅한다.

불행히도 그 라우팅 알고리즘은 너무 공격적이라, 각 기계에서 나가는 모든 트래픽을 그 기계에 연결된 링크 중 우선순위가 가장 높은 링크 하나로만 보내 버린다. 그 결과 어떤 기계 집합들은 다른 집합과 고립될 수 있다.

형식적으로, 기계 m이 링크 \ell을 사용한다는 것은(그리고 그 경우에만) \ellm에 연결된 링크들 중 우선순위가 가장 높은 링크라는 뜻이다. 또한 어떤 링크가 활성(active)이라는 것은, 그 링크가 연결하는 두 기계 중 적어도 하나에 의해 사용된다는 뜻이다. 링크 우선순위가 주어지면, 원래 네트워크는 서로 겹치지 않는 여러 인트라넷(intranet)으로 분리된다. 두 기계가 같은 인트라넷에 속하는 것은, 활성 링크만을 사용해 두 기계 사이에 어떤 경로가 존재할 때 그리고 그때뿐이다.

Example with 2 intranets. Active edges are (1, 2) and (3, 4) with weights 6 and 5 respectively. Example with 1 intranet. Active edges are (1, 2), (2, 3), and (3, 4) with weights 6, 5, and 4 respectively.

예를 들어 위의 왼쪽 그림에서는, 우선순위가 65인 링크만 활성이다. 이로 인해 서로 분리된 인트라넷이 두 개 생긴다. 반면 오른쪽 그림에서는 세 개의 링크가 활성이고, 그 결과 4대의 모든 기계가 하나의 인트라넷을 이룬다.

Apricot Rules LLC의 품질 보증 팀의 일원으로서, 당신은 문제의 심각도를 조사하고 있다. 당신은 링크 우선순위가 가능한 (\mathbf{M} \times (\mathbf{M} - 1) / 2)!가지 배정 방법 중에서 균등 무작위로 배정될 때, 인트라넷의 개수가 정확히 \mathbf{K}개일 확률을 알고 싶다.


입력

입력의 첫 줄에는 테스트 케이스 수 \mathbf{T}가 주어진다. \mathbf{T}개의 테스트 케이스가 이어진다. 각 테스트 케이스는 정수 두 개 \mathbf{M}, \mathbf{K}가 주어진 한 줄로 이루어져 있으며, 이는 각각 기계의 수와 목표 인트라넷 개수이다.


출력

각 테스트 케이스마다 Case #x: y 형식의 한 줄을 출력하라. 여기서 x는 (1부터 시작하는) 테스트 케이스 번호이고, y는 아래에 정의된 확률을 소수 10^9+7(1000000007)로 나눈 나머지로 계산한 값이다. 확률을 기약분수 p/q로 나타내자. (p, q는 0 이상의 정수이며 p+q가 최소가 되도록 한다.) 그러면 yp \cdot q^{-1} \bmod {10^9+7}이어야 한다. 여기서 q^{-1}는 모듈러 10^9+7에 대한 q모듈러 곱셈 역원이다. 이 문제의 제한 하에서는 그런 y가 항상 존재하며 유일함을 보일 수 있다.


예제

3
5 2
5 1
6 3
Case #1: 428571432
Case #2: 571428576
Case #3: 47619048
샘플 케이스 #1에서 다음 상황을 생각해 보자. \mathbf{M} = 5인 기계 1, 2, 3, 4, 5가 있고, 기계 a와 b를 연결하는 링크를 (a, b)로 표기하자. 링크 (1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)의 우선순위가 각각 9, 8, 7, 6, 5, 4, 3, 2, 1, 10이라고 하자. 그러면 기계 1과 2는 링크 (1, 2)를, 기계 3은 (1, 3)을, 기계 4와 5는 (4, 5)를 사용한다. 따라서 활성 링크는 (1, 2), (1, 3), (4, 5) 세 개이고, 두 개의 intranet \{1, 2, 3\}과 \{4, 5\}가 생긴다. \mathbf{K} = 2이므로 이 상황은 답에 포함된다. 우선순위를 배정하는 방법은 10! = 3628800가지이고, 그중 intranet이 정확히 2개가 되는 경우는 1555200가지이므로 확률은 3/7이다. 샘플 케이스 #2에서는 확률이 4/7이다. 샘플 케이스 #3에서는 확률이 1/21이다.

출처

GCJ 2022r1c C

로그인해야 코드를 작성할 수 있어요.