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

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

제약이 있는 순열

면접 대비

시간 제한1초메모리 제한128 MB

요약
1부터 n까지의 순열 중 주어진 x가 y보다 먼저 와야 한다는 제약을 모두 만족하는 순열의 개수를 센다.
난이도

쉬움10점 중 2점

유형
완전 탐색, 조합론, 구현, 재귀
정답자
아직 제출이 없습니다

문제

1,2,…,n1, 2, \dots, n 의 순열이란 이 수들을 일렬로 나열한 것을 말합니다. 예를 들어 1,2,31, 2, 3 의 순열은 66 가지이며, 123123, 132132, 213213, 231231, 312312, 321321 입니다. 다르게 생각하면, 11 부터 nn 까지 번호가 적힌 nn 개의 원반을 주머니에서 (다시 넣지 않고) 하나씩 꺼내어 꺼낸 순서를 기록하는 것과 같습니다.

1,…,n1, \dots, n 의 순열의 개수는 n!=n×(n−1)…3×2×1n! = n \times (n-1) \dots 3 \times 2 \times 1 로 나타내며, 이를 "nn 팩토리얼"이라고 부릅니다.

이 문제에서는 정수 nn (1≤n≤9)(1 \le n \le 9) 과 수들의 순서에 대한 kk (k≥0)(k \ge 0) 개의 제약이 주어집니다. 각 제약은 순열에서 xx 가 yy 보다 반드시 앞에 와야 함을 의미하는 쌍 (x,y)(x, y) 로 주어집니다.

모든 제약을 만족하는 순열의 개수를 출력하세요.

입력

입력은 k+2k + 2 개의 줄로 이루어집니다. 첫째 줄에는 정수 nn 이 주어집니다. 둘째 줄에는 제약의 개수를 나타내는 정수 kk 가 주어집니다. 이어지는 kk 개의 줄에는 각각 1,…,n1, \dots, n 범위에 속하는 서로 다른 두 정수 xx 와 yy 가 주어지며, 이는 xx 가 yy 보다 앞에 와야 함을 의미합니다.

출력

kk 개의 제약을 모두 만족하는 1,…,n1, \dots, n 의 순열의 개수를 정수 하나로 출력합니다.

예제3

  1. 예제 1

    입력
    3
    2
    1 2
    2 3
    
    예상 출력
    1
    
  2. 예제 2

    입력
    4
    2
    1 2
    2 1
    
    예상 출력
    0
    
  3. 예제 3

    입력
    4
    2
    1 2
    2 3
    
    예상 출력
    4