파티
시간 제한3초메모리 제한128 MB
각 친구를 순서대로 보면서 현재 명단의 모두와 아는 사이면 명단에 추가하고, 아니면 모르는 가장 작은 번호를 명단에서 빼는 결정적 절차를 수행한 뒤 남은 사람 중 가장 작은 n/3명을 출력한다.
문제
바이트아사르(Byteasar)는 파티를 열려고 한다. 당연히 파티가 성공적이길 바란다. 그는 초대한 손님이 모두 서로 아는 사이이기만 하면 파티가 성공한다고 확신한다. 지금 그는 초대하고 싶은 친구 목록을 짜고 있다.
바이트아사르에게는 친구가 명 있고, 은 의 배수이다. 다행히 그의 친구들은 대부분 서로 아는 사이다. 또한 그는 예전에 자신의 친구 명이 모인 파티에 참석한 적이 있는데, 그 자리에 있던 사람들은 모두 서로 아는 사이였다는 사실을 기억한다. 아쉽게도 그 파티에 대해 그 밖의 것은 잘 기억나지 않는다. 특히 어떤 친구들이 그 자리에 있었는지는 전혀 모른다.
바이트아사르는 굳이 큰 파티를 열 생각은 없지만, 최소한 친구 명은 초대하고 싶다. 어떻게 골라야 할지 몰라 당신에게 도움을 청한다. 즉, 서로 모두 아는 사이인 친구 명을 찾아야 한다.
입력
첫째 줄에 두 정수 과 이 공백 하나로 구분되어 주어진다 (, , 그리고 은 의 배수). 각각 바이트아사르의 친구 수와, 서로 아는 친구 쌍의 수를 뜻한다. 친구들은 번부터 번까지 번호가 매겨져 있다.
이어지는 개의 줄에는 각각 공백으로 구분된 두 정수가 주어진다. 번째 줄()의 두 수 와 ()는 번과 번 두 사람이 서로 아는 사이임을 뜻한다. 같은 쌍은 입력에 많아야 한 번 등장한다.
출력
조건을 만족하는 친구 무리는 여러 가지일 수 있으므로, 답이 유일하게 정해지도록 아래의 결정적 절차로 초대 목록을 만든다.
빈 초대 목록에서 시작한다. 친구를 번부터 번까지 차례대로 살펴본다. 친구 를 살펴볼 때:
- 친구 가 현재 초대 목록에 있는 모든 사람과 서로 아는 사이라면, 를 목록에 추가한다.
- 그렇지 않다면, 목록에 있는 사람 중 와 모르는 사이인 가장 번호가 작은 사람을 목록에서 빼고, 는 추가하지 않는다.
친구 명을 모두 살펴보고 나면, 목록에 남은 사람들은 서로 모두 아는 사이이며 그 수는 최소 명이다. 최종 초대 목록에서 번호가 가장 작은 명을, 한 줄에 오름차순으로 공백 하나씩 구분하여 출력한다.
힌트

예시 그래프에서 번 친구는 서로 모두 아는 사이다. 위 절차를 번부터 차례로 적용하면 최종 초대 목록으로 가 남고, 따라서 3 4를 출력한다.