만드는 중입니다

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

해밀턴 경로

면접 대비

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

요약
방향 그래프에서 연속한 두 정점을 잇는 간선만 정확히 존재하는 순열의 개수를 세고, 개수가 n 이하이면 사전순으로 값을 출력합니다.
난이도

쉬움10점 중 3점

유형
그래프, 구현
정답자
아직 제출이 없습니다

문제

방향 그래프가 nn개의 정점과 mm개의 간선으로 주어진다. 정점은 11부터 nn까지 번호가 매겨져 있다. 다음 조건을 만족하는 정점의 순열 p1,p2,…,pnp_1, p_2, \ldots, p_n을 모두 구하라.

  • 모든 1≤i<j≤n1 \leq i < j \leq n에 대해, 간선 (pi,pj)(p_i, p_j)가 존재할 필요충분조건은 j=i+1j = i + 1이다.

순열 p1,p2,…,pnp_1, p_2, \ldots, p_n의 값을 (∑i=1npi⋅10n−i) mod (109+7)\left(\sum_{i = 1}^n p_i \cdot 10^{n - i}\right) \bmod (10^9 + 7)로 정의한다.

조건을 만족하는 순열의 개수를 109+710^9 + 7로 나눈 나머지를 출력하라. 개수가 nn 이하이면, 순열을 사전순으로 정렬했을 때의 값도 그 순서대로 출력하라.

입력

첫 줄에 테스트 케이스의 개수 TT (T≤105T \leq 10^5)가 주어진다.

각 테스트 케이스의 첫 줄에 정수 nn, mm (n≥1n \geq 1, m≥0m \geq 0, 1≤∑n≤5⋅1051 \leq \sum n \leq 5 \cdot 10^5, 1≤∑m≤1061 \leq \sum m \leq 10^6)이 주어진다. 이어지는 mm개의 줄에는 정수 uu, vv (1≤u,v≤n1 \leq u, v \leq n, u≠vu \neq v)가 주어지며, 이는 uu에서 vv로 가는 방향 간선이 있다는 뜻이다. 평행 간선이 있을 수 있다.

출력

각 테스트 케이스마다 첫 줄에 순열의 개수를 109+710^9 + 7로 나눈 나머지를 출력한다. 순열의 개수가 nn 이하이면, 다음 줄에 모든 순열의 값을 사전순으로 공백으로 구분하여 출력한다. 개수가 nn보다 크거나 해가 없으면 빈 줄을 출력할 필요가 없다.

예제1

  1. 예제 1

    입력
    1
    5 6
    3 4
    2 5
    5 3
    1 3
    4 2
    5 1
    
    예상 출력
    2
    13425 34251