분할 통치
시간 제한8초메모리 제한512 MB
연결 그래프의 도시를 세 개의 독립 집합으로 나누되 두 집합의 크기가 같아야 할 때, 가능한 모든 공통 크기를 오름차순으로 나열한다.
문제
타로, 하나코, 지로는 세 명이서 JAG 왕국을 통치하고 있다. JAG 왕국에는 개의 도시가 있고, 몇몇 도시는 양방향 도로로 연결되어 있다. 어떤 도시에서도 다른 모든 도시로 1개 이상의 도로를 거쳐 반드시 도달할 수 있다.
어느 날 타로와 하나코는 결국 사이가 틀어졌고, 세 명이 도시를 나누어 통치하기로 했다. 하지만 사이가 너무 나빠진 나머지, 타로가 통치하는 도시와 하나코가 통치하는 도시가 도로 하나로 직접 연결되어 있는 것조차 싫어한다. 그래서 다음 조건을 만족하도록 통치할 도시를 나누기로 했다.
- 타로가 통치하는 도시와 하나코가 통치하는 도시로 이루어진 임의의 쌍은 직접 도로로 연결되어 있지 않다. 타로와 하나코의 사이가 매우 나쁘기 때문이다.
- 같은 사람이 통치하는 도시끼리도 직접 도로로 연결되어 있지 않다. 그런 와중에도 다른 사람의 통치 아래에 있는 도시를 경유하도록 강제해서 외교를 장려하기 위해서이다.
- 타로가 통치하는 도시의 총수와 하나코가 통치하는 도시의 총수는 같아야 한다. 총수를 같게 하지 않으면 타로와 하나코의 사이가 더 나빠질 것 같기 때문이다. 지로는 마음이 매우 넓으므로 지로가 통치하는 도시의 총수는 몇 개여도 된다.
위 조건을 만족하는 분담이라면 세 사람은 납득하고 통치할 수 있으며, 누군가가 통치하는 도시가 0개여도 불만이 없다. 이때 타로가 통치하는 도시의 총수(=하나코가 통치하는 도시의 총수)로 가능한 수를 모두 나열하는 프로그램을 작성하시오.
입력
입력은 여러 데이터셋으로 이루어진다. 데이터셋의 수는 최대 50이다. 각 데이터셋은 다음 형식으로 주어진다.
N M
u1 v1
...
uM vM
1번째 줄은 두 정수 ()과 ()으로 이루어지며, 각각 도시의 수와 도로의 수를 나타낸다. 이어지는 개의 줄 중 번째 줄은 두 정수 와 ()로 이루어지며, 번째 도로가 도시 와 도시 를 양방향으로 연결함을 나타낸다. 어떤 도시에서도 다른 모든 도시로 1개 이상의 도로를 거쳐 반드시 도달할 수 있음이 보장된다. 또한 같은 도시 쌍을 잇는 도로가 여러 개 주어지는 경우는 없다. 즉 모든 에 대해 를 만족한다.
입력의 끝은 두 개의 0으로 이루어진 줄로 나타낸다.
출력
각 데이터셋에 대해 타로가 통치하는 도시의 총수로 가능한 수가 가지일 때, 먼저 1번째 줄에 를 출력하고, 그 뒤에 가능한 총수를 1줄에 1개씩 오름차순으로 출력하시오.