[B] 이진 매칭
시간 제한2초메모리 제한1024 MB
남은 그래프에서 모든 정점의 차수가 홀수가 되도록 간선 부분집합을 찾고, 없으면 -1을 출력한다.
문제
하이바이는 최근 이진 매칭을 배웠다. 이진 매칭이 무엇인지 모른다면, 아래 정의를 참고하자.
무방향 그래프 의 이진 매칭은 아래 조건을 만족하는 이다.
- 에 속한 간선들만 남긴 그래프 에서, 모든 정점 에 대해 이다. 여기서 는 의 차수를 의미한다.
마침 출제할 만한 문제가 없었던 하이바이는 주어진 그래프의 이진 매칭을 찾는 문제를 내기로 했다. 그런데 실수로 입력 제한을 이 아니라 으로 세팅해 버렸다!
입력
첫째 줄에는 그래프 의 정점 개수 과 간선 개수 이 공백으로 구분되어 주어진다.
이후 개의 줄에 걸쳐 번째 줄에는 개의 정수 , 가 공백으로 구분되어 주어진다. 이는 번 정점과 번 정점을 연결하는 번 간선을 의미한다.
두 정점을 잇는 간선이 여러 개일 수 있으며, 주어지는 그래프가 연결되어 있지 않을 수도 있다.
출력
만약 주어진 그래프의 이진 매칭이 존재하지 않는다면 첫째 줄에 -1을 출력한다.
만약 주어진 그래프의 이진 매칭이 존재한다면 첫째 줄에 이진 매칭의 크기 를 출력하고, 둘째 줄에 이진 매칭에 속한 간선의 번호를 오름차순으로 공백으로 구분하여 출력한다.
가능한 이진 매칭이 여러 가지라면 그중 아무거나 하나를 출력하면 된다. 이진 매칭의 크기를 최대화하거나, 최소화할 필요는 없다.