겨울 축제
시간 제한5초메모리 제한512 MB
각 도로에 비용 0, 1, 2 중 하나를 매겨 한 정점에서 인접한 두 도로의 합을 3으로 나눈 나머지가 1이 되지 않게 하고, 모든 사이클의 합을 홀수로 만드는 최소 총비용을 구합니다.
문제
피터가 가장 좋아하는 계절은 겨울이다. 축제에 빠진 피터는 도시를 장식하고 싶어 한다.
도시에는 아이스 스케이팅, 스키, 눈싸움 같은 활동을 할 수 있는 지역이 많다. 일부 지역 쌍을 잇는 도로가 있다. 피터는 각 도로를 따라 특별한 장식을 달고 싶어 한다. 장식은 비용이 0, 1, 2인 세 종류가 있다.
피터는 장식이 다음 조건을 만족하기를 원한다.
- 한 지역에 인접한 서로 다른 도로 두 개를 고른다. 두 도로에 달린 장식의 비용을 각각 , 라 하면 이어야 한다.
- 임의의 사이클을 따라 있는 장식 비용의 합은 홀수여야 한다.
사이클은 도로로 연결된 지역들이 고리를 이루는 순서열이다. 각 지역은 고리에 한 번만 나타날 수 있다.
피터는 원하는 방식으로 도시를 장식하는 데 드는 최소 비용을 알고 싶어 한다.
입력
각 입력은 테스트 케이스 하나로 이루어진다. 프로그램은 서로 다른 입력에 대해 여러 번 실행될 수 있다.
각 테스트 케이스는 두 정수 과 ()이 적힌 줄로 시작한다. 여기서 은 지역의 수, 은 도로의 수이다. 지역은 1부터 까지 번호가 매겨져 있다.
이어지는 개의 줄에는 각각 두 정수 , ()가 주어지며, 이는 지역 와 를 직접 잇는 도로가 있다는 뜻이다. 같은 두 지역을 잇는 도로는 없다. 도로를 따라 모든 지역에서 다른 모든 지역으로 갈 수 있을 수도 있고 없을 수도 있다.
출력
조건을 지키며 도시를 장식하는 최소 비용을 한 개의 정수로 출력한다. 피터의 조건에 맞게 도시를 장식하는 것이 불가능하면 을 출력한다.