RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R01482

단순 사이클 세기

Gold III 골드 III
난이도
2s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

정점이 \(n\) 개, 간선이 \(m\) 개인 방향 그래프가 주어진다. 이 그래프에 들어 있는 단순 사이클의 개수를 세어라.

단순 사이클이란 같은 정점을 두 번 이상 지나지 않으면서, 간선 방향을 따라 어떤 정점에서 출발해 다시 그 정점으로 돌아오는 닫힌 경로를 말한다. 사이클의 길이(정점 수)는 \(2\) 이상이어야 한다.

두 사이클은, 같은 정점 집합을 같은 순환 순서·같은 방향으로 도는 경우에만 같은 것으로 본다. 예를 들어 \(1 \to 2 \to 3 \to 1\)\(2 \to 3 \to 1 \to 2\) 는 같은 사이클이지만, 방향이 반대인 \(1 \to 3 \to 2 \to 1\) 은 (간선이 모두 존재한다면) 다른 사이클이다.

그래프에는 셀프 루프와 중복 간선이 없다.

제약

\(1 \le n \le 18\)

\(0 \le m \le n(n-1)\)

셀프 루프와 중복 간선은 없다.

입력 형식

첫째 줄에 정점의 수 \(n\) 과 간선의 수 \(m\) 이 공백으로 구분되어 주어진다.

다음 \(m\) 개의 줄에 각각 두 정수 \(u\), \(v\) 가 주어지며, \(u\) 에서 \(v\) 로 가는 방향 간선을 뜻한다 (\(1 \le u, v \le n\), \(u \ne v\)).

출력 형식

그래프에 존재하는 단순 방향 사이클의 개수를 한 줄에 출력한다.

예제 1
입력
3 3
1 2
2 3
3 1
출력
1
설명

유일한 사이클 \(1 \to 2 \to 3 \to 1\) 하나뿐이다.

예제 2
입력
3 6
1 2
1 3
2 1
2 3
3 1
3 2
출력
5
설명

길이 \(2\) 사이클 \(3\) 개(\(\{1,2\},\{1,3\},\{2,3\}\))와 길이 \(3\) 사이클 \(2\) 개(\(1\to2\to3\to1\), \(1\to3\to2\to1\))로 모두 \(5\) 개.

예제 3
입력
3 3
1 2
2 3
1 3
출력
0
설명

방향이 모두 한쪽으로만 흘러 사이클이 없다.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

단순 사이클 세기

개요
출제자 난이도 Gold III 골드 III 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

단순 사이클 세기

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8