해밀턴 경로
면접 대비시간 제한4초메모리 제한512 MB
방향 그래프에서 연속한 두 정점을 잇는 간선만 정확히 존재하는 순열의 개수를 세고, 개수가 n 이하이면 사전순으로 값을 출력합니다.
문제
방향 그래프가 개의 정점과 개의 간선으로 주어진다. 정점은 부터 까지 번호가 매겨져 있다. 다음 조건을 만족하는 정점의 순열 을 모두 구하라.
- 모든 에 대해, 간선 가 존재할 필요충분조건은 이다.
순열 의 값을 로 정의한다.
조건을 만족하는 순열의 개수를 로 나눈 나머지를 출력하라. 개수가 이하이면, 순열을 사전순으로 정렬했을 때의 값도 그 순서대로 출력하라.
입력
첫 줄에 테스트 케이스의 개수 ()가 주어진다.
각 테스트 케이스의 첫 줄에 정수 , (, , , )이 주어진다. 이어지는 개의 줄에는 정수 , (, )가 주어지며, 이는 에서 로 가는 방향 간선이 있다는 뜻이다. 평행 간선이 있을 수 있다.
출력
각 테스트 케이스마다 첫 줄에 순열의 개수를 로 나눈 나머지를 출력한다. 순열의 개수가 이하이면, 다음 줄에 모든 순열의 값을 사전순으로 공백으로 구분하여 출력한다. 개수가 보다 크거나 해가 없으면 빈 줄을 출력할 필요가 없다.