아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

그래프 세기

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

요약
N개 노드의 연결된 무방향 라벨 그래프 중 다리가 정확히 K개인 것의 개수를 합성수일 수 있는 M으로 나눈 나머지로 구한다.
난이도

어려움10점 중 9점

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

문제

먼저 무방향 연결 레이블 그래프를 정의하자. 이는 각 노드에 고유한 레이블이 붙은 N개의 노드와 여러 간선으로 이루어진 그래프로, 각 간선에는 특정한 방향이 없고, 중복 간선과 한 노드에서 자기 자신으로 가는 간선은 허용되지 않으며, 임의의 노드에서 다른 임의의 노드로 도달할 수 있다.

이런 그래프에서 단절선이란, 그 간선을 제거하면 그래프가 분리되는(서로 도달할 수 없는 노드가 존재하게 되는) 간선을 말한다.

이 문제에서는 N과 K가 주어지며, 정확히 N개의 노드와 K개의 단절선을 가진 서로 다른 무방향 연결 레이블 그래프의 개수를 세는 것이 과제이다. 그 수가 매우 클 수 있으므로 M으로 나눈 나머지를 출력한다.

간선은 그것이 연결하는 노드의 레이블로 정의한다. 예를 들어 (X, Y)는 X와 Y 사이의 간선이라고 할 수 있고, (Y, X)는 같은 간선으로 본다(무방향이기 때문이다). 두 그래프는 한쪽에만 존재하는 간선이 있으면 서로 다른 것으로 본다.

입력

프로그램은 하나 이상의 테스트 케이스에 대해 검사를 받는다. 입력의 첫 줄에는 테스트 케이스의 수를 나타내는 정수 T (1 ≤ T ≤ 100)가 주어진다. 이어서 T개의 테스트 케이스가 주어진다.

각 테스트 케이스는 공백으로 구분된 3개의 정수 N (1 ≤ N ≤ 50), K (0 ≤ K < N), M (1 ≤ M ≤ 109)을 포함하는 한 줄이다. 이들은 문제에서 설명한 수들이다.

전체 테스트 케이스의 95%에서 N은 25를 넘지 않는다.

출력

각 테스트 케이스마다 위에서 설명한 그래프의 개수를 M으로 나눈 나머지를 한 줄에 출력한다.

힌트

다음은 첫 번째 테스트 케이스에 대한 3개의 그래프이다.

다음은 두 번째 테스트 케이스에 대한 유일한 그래프이다.

예제1

  1. 예제 1

    입력
    4
    3 2 10
    3 0 10
    6 3 10000
    6 3 1000
    
    예상 출력
    3
    1
    2160
    160