프로그램 명: stable
제한시간: 10 초

어떤 심리학자는 학교의 학급이나 회사의 부서와 같이 여러 사람들이 모인 집단이 어떤 경우에 안정되어 있는지를 연구하였다. 어떤 집단이 다음의 세 조건을 만족하면 그 집단은 안정된 집단이라고 한다.

  1. 같은 그룹에 속한 사람들 끼리는 서로 좋아해야 한다.
  2. 다른 그룹에 속한 사람들 끼리는 서로 싫어해야 한다.
  3. 한 그룹은 최소한 2 명 이상이다.
한 집단의 사람들 사이에 좋아하고 싫어하는 관계가 주어졌을때 , 그 집단이 안정된 집단인지 검사하는 프로그램을 작성하시오. 안정된 집단이라면 , 그 집단을 이루고 있는 그룹과 그 그룹에 속한 사람들을 출력하시오.

대인관계에는 대칭성이 있어서 A 과 B 를 좋아한다면 B 도 A 를 좋아한다고 한다. 사람들은 자기자신을 무조건 좋아한다고 하자.

그림과 같은 경우에 집단{1,2,3,4,5}를 소집단{1,4,5} 와 {2,3} 으로 분할했을 때 각 소집단에 속한 사람들 끼리는 모두 서로 좋아하고 서로 다른 소집단에 속한 사람들끼리는 모두 서로 싫어하므로 안정된 집단이라고 볼 수 있다.

프로그램의 실행시간은 10 초를 넘을 수 없다.

입력형식

출력형식

주어진 입력이 안정되지 않을 경우는 첫줄에 빈칸없이 0 을 출력한다.

안정된 집단의 경우는 첫줄에 서로 좋아하는 소집단의 수를 출력하고 그 다음 줄부터는 각 줄 마다 각 소집단에 속하는 사람의 번호를 출력한다.

출력 순서는 소집단내에서는 번호의 오름차순으로 출력하고, 소집단 간에는 그 소집단에 속하는 제일 작은 번호의 오름차순으로출력한다.

입력과 출력의 예(1)

앞의 그림에 대한 입력과 출력의 예는 다음과 같다.
입력

5 
0 1 1 0 0 
1 0 0 1 1 
1 0 0 1 1 
0 1 1 0 0 
0 1 1 0 0 

출력

2 
1 4 5 
2 3 

입력과 출력의 예(2)

입력

4 
0 1 0 0 
1 0 1 1 
0 1 0 0 
0 1 0 0 

출력

0 
출처: koi 중등 기출 
▣ 2011 년 3 월 26 일 대회 데이터로 변경 했습니다.
[질/답] [제출 현황] [푼 후(1)]
[ 채 점 ] [홈으로]  [뒤 로]