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

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

순환 노선 세기

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

요약
역이 최대 9개인 방향 그래프에서 출발점이 다른 같은 순환을 하나로 쳐서 단순 사이클 개수를 셉니다.
난이도

보통10점 중 6점

유형
그래프, 백트래킹, 완전 탐색
정답자
아직 제출이 없습니다

문제

루크는 여행지마다 그 도시의 대중교통을 타보는 것을 좋아한다. 그중에서도 한 역에서 출발해 다른 역을 적어도 하나 거친 뒤 출발한 역으로 돌아오는 순환 경로를 찾는 데 재미를 붙였다. 노선망마다 이런 순환 경로가 몇 개나 있는지 알고 싶어 한다.

루크가 세려는 것은 단순 순환이다. 단순 순환은 서로 다른 역의 나열 t1,t2,…,tjt_1, t_2, \dots, t_j 로서, 1≤i<j1 \le i < j 인 모든 ii 에 대해 tit_i 에서 ti+1t_{i+1} 로 바로 가는 연결이 있고, tjt_j 에서 t1t_1 로 바로 가는 연결도 있는 것을 말한다. 순환은 그 안의 어느 역에서든 시작해 적을 수 있으므로, 한 나열을 순환하듯 밀어서 얻은 나열은 모두 같은 단순 순환으로 본다. 반면 같은 역 집합을 다른 순서로 도는 두 단순 순환은 서로 다른 것으로 센다.

노선망에 서로 다른 단순 순환이 몇 개 있는지 세는 프로그램을 작성하시오.

입력

첫째 줄에 노선망의 역 개수 mm 이 주어진다 (3≤m≤93 \le m \le 9). 역에는 00 부터 m−1m-1 까지 번호가 붙어 있다.

둘째 줄에 연결의 개수 nn 이 주어진다 (1≤n≤m(m−1)1 \le n \le m(m-1)). 이어지는 nn 개 줄에 연결이 한 줄에 하나씩 주어진다. 각 줄은 두 정수 ss 와 tt 로 이루어지며 (0≤s<m0 \le s < m, 0≤t<m0 \le t < m, s≠ts \ne t), 역 ss 에서 역 tt 로 가는 일방통행 연결이 있다는 뜻이다.

출력

노선망에 있는 서로 다른 단순 순환의 개수를 출력한다.

예제3

  1. 예제 1

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

    입력
    8
    10
    0 1
    1 2
    2 3
    3 4
    4 5
    5 0
    2 6
    6 0
    3 7
    7 0
    
    예상 출력
    3
    
  3. 예제 3

    입력
    4
    8
    0 1
    1 2
    2 3
    3 0
    1 0
    2 1
    3 2
    0 3
    
    예상 출력
    6