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

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

도미노

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

요약
주어진 도미노 조각을 모두 사용해 서로 겹치지 않는 하나 이상의 순환으로 나누는 방법의 수를 구하는 문제입니다.
난이도

어려움10점 중 9점

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

문제

은진이는 도미노 게임을 좋아한다. 도미노 조각은 직사각형이며 두 개의 정사각형으로 나뉘어 있다. 각 정사각형에는 0 이상 9 이하의 정수가 하나씩 쓰여 있다. 한 조각에 쓰인 두 숫자는 항상 서로 다르므로 가능한 조각은 모두 45개이다. 조각은 뒤집어서 사용할 수 있으므로, 숫자 1과 2가 들어 있는 조각은 아래 두 모양이 같은 한 조각이다.

+---+---+     +---+---+
| 1 | 2 |     | 2 | 1 |
+---+---+     +---+---+

안타깝게도 몇몇 조각이 사라졌다. 은진이는 남은 도미노 조각으로 만들 수 있는 사이클 콜렉션이 몇 개인지 알고 싶어 한다.

사이클 콜렉션은 조각을 서로 공유하지 않는 하나 이상의 사이클로 이루어진 집합이다. 하나의 사이클에서는 차례로 놓인 각 조각의 왼쪽 숫자가 바로 앞 조각의 오른쪽 숫자와 같아야 한다. 또한 처음 놓은 조각의 왼쪽 숫자는 마지막 조각의 오른쪽 숫자와도 같아야 한다. 조각은 놓기 전에 뒤집을 수 있다.

+---+---++---+---++---+---++---+---++---+---++---+---+
| 1 | 2 || 2 | 5 || 5 | 4 || 4 | 2 || 2 | 8 || 8 | 1 |
+---+---++---+---++---+---++---+---++---+---++---+---+
+---+---++---+---++---+---++---+---++---+---++---+---+
| 1 | 2 || 2 | 4 || 4 | 5 || 5 | 2 || 2 | 8 || 8 | 1 |
+---+---++---+---++---+---++---+---++---+---++---+---+
+---+---++---+---++---+---+ +---+---++---+---++---+---+
| 1 | 2 || 2 | 8 || 8 | 1 | | 4 | 5 || 5 | 2 || 2 | 4 |
+---+---++---+---++---+---+ +---+---++---+---++---+---+

위 그림은 같은 조각의 집합으로 만들 수 있는 세 가지 서로 다른 사이클 콜렉션이다.

어떤 조각은 양옆에 놓인 두 조각과 연결되어 있다고 본다. 사이클에서는 처음 조각과 마지막 조각도 서로 연결되어 있다.

두 사이클은 각 조각이 두 사이클에서 모두 같은 조각들과 연결되어 있을 때 같다. 두 사이클 콜렉션은 포함하는 사이클의 집합이 같을 때 같다.

남은 조각이 주어졌을 때, 모든 조각을 사용해 만들 수 있는 사이클 콜렉션의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 조각의 개수 N (1 <= N <= 45)이 주어진다. 둘째 줄부터 N개의 줄에는 각 조각이 주어진다. 조각은 두 개의 숫자로 표현되며, 앞의 숫자는 항상 뒤의 숫자보다 작다. 같은 조각은 중복되어 주어지지 않는다.

출력

첫째 줄에 만들 수 있는 사이클 콜렉션의 개수를 출력한다. 이 값은 2^63보다 작다.

예제4

  1. 예제 1

    입력
    6
    12
    25
    45
    24
    28
    18
    
    예상 출력
    3
    
  2. 예제 2

    입력
    7
    09
    12
    24
    14
    57
    79
    05
    
    예상 출력
    1
    
  3. 예제 3

    입력
    5
    01
    12
    23
    34
    45
    
    예상 출력
    0
    
  4. 예제 4

    입력
    10
    34
    35
    36
    37
    45
    46
    47
    56
    57
    67
    
    예상 출력
    243