음모
시간 제한3초메모리 제한128 MB
n명 사이의 상호 아는 관계 그래프가 주어질 때, 모든 사람을 공집합이 아닌 독립 집합(공모자)과 공집합이 아닌 클리크(지원단)로 나누는 방법의 수를 센다.
문제
적대국 비토티아가 바이트오티아를 기습 공격해 영토의 상당 부분을 점령했다. 바이트오티아의 왕 바이트아사르는 점령지에서 저항 운동을 조직하려 한다. 그는 먼저 저항 운동의 핵심이 될 사람들을 골랐고, 이들을 두 그룹으로 나누려고 한다.
- 음모자 그룹: 점령지 안에서 직접 활동한다.
- 지원 그룹: 자유 바이트오티아 안에서 활동한다.
이 분할은 다음 조건을 모두 만족해야 한다.
- 지원 그룹에 속한 두 사람은 서로 반드시 아는 사이여야 한다. 그래야 그룹이 효율적으로 협력할 수 있다.
- 음모자 그룹에 속한 두 사람은 서로 아는 사이가 아니어야 한다.
- 두 그룹 모두 비어 있으면 안 된다. 즉 음모자와 지원 그룹 구성원이 각각 최소 한 명은 있어야 한다.
바이트아사르는 고른 사람들을 이 두 그룹으로 나누는 방법이 몇 가지인지, 그리고 무엇보다 그러한 분할이 가능하기는 한지 알고 싶어 한다. 그를 도와 이 수를 구하라.
입력
첫째 줄에 저항 운동에 참여하는 사람 수를 나타내는 정수 ()이 주어진다. 사람들은 번부터 번까지 번호가 매겨져 있다.
이어지는 개의 줄은 각 사람이 아는 사람을 설명한다. 그중 번째 줄은 먼저 사람 가 아는 사람의 수 ()로 시작하고, 이어서 그 사람들의 번호 가 오름차순으로 주어진다 (, ).
아는 관계는 상호적이다. 즉 사람 가 사람 의 목록에 있으면, 사람 도 사람 의 목록에 있다.
출력
위 조건을 모두 만족하도록 고른 사람들을 음모자 그룹과 지원 그룹으로 나누는 방법의 수를 정수 하나로 출력한다. 조건을 만족하는 분할이 하나도 없으면 을 출력한다.
힌트

위 예시에서는 유효한 분할이 세 가지 있다. 음모자 그룹은 번과 번, 번과 번, 또는 번 한 명이 될 수 있다.