만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

겨울 축제

시간 제한5초메모리 제한512 MB

요약
각 도로에 비용 0, 1, 2 중 하나를 매겨 한 정점에서 인접한 두 도로의 합을 3으로 나눈 나머지가 1이 되지 않게 하고, 모든 사이클의 합을 홀수로 만드는 최소 총비용을 구합니다.
난이도

어려움10점 중 8점

유형
그래프, DFS, 유니온 파인드
정답자
아직 제출이 없습니다

문제

피터가 가장 좋아하는 계절은 겨울이다. 축제에 빠진 피터는 도시를 장식하고 싶어 한다.

도시에는 아이스 스케이팅, 스키, 눈싸움 같은 활동을 할 수 있는 지역이 많다. 일부 지역 쌍을 잇는 도로가 있다. 피터는 각 도로를 따라 특별한 장식을 달고 싶어 한다. 장식은 비용이 0, 1, 2인 세 종류가 있다.

피터는 장식이 다음 조건을 만족하기를 원한다.

  • 한 지역에 인접한 서로 다른 도로 두 개를 고른다. 두 도로에 달린 장식의 비용을 각각 aa, bb라 하면 (a+b) mod 3≠1(a + b) \bmod 3 \neq 1이어야 한다.
  • 임의의 사이클을 따라 있는 장식 비용의 합은 홀수여야 한다.

사이클은 도로로 연결된 지역들이 고리를 이루는 순서열이다. 각 지역은 고리에 한 번만 나타날 수 있다.

피터는 원하는 방식으로 도시를 장식하는 데 드는 최소 비용을 알고 싶어 한다.

입력

각 입력은 테스트 케이스 하나로 이루어진다. 프로그램은 서로 다른 입력에 대해 여러 번 실행될 수 있다.

각 테스트 케이스는 두 정수 nn과 mm(1≤n,m≤1051 \le n, m \le 10^5)이 적힌 줄로 시작한다. 여기서 nn은 지역의 수, mm은 도로의 수이다. 지역은 1부터 nn까지 번호가 매겨져 있다.

이어지는 mm개의 줄에는 각각 두 정수 aa, bb(1≤a<b≤n1 \le a < b \le n)가 주어지며, 이는 지역 aa와 bb를 직접 잇는 도로가 있다는 뜻이다. 같은 두 지역을 잇는 도로는 없다. 도로를 따라 모든 지역에서 다른 모든 지역으로 갈 수 있을 수도 있고 없을 수도 있다.

출력

조건을 지키며 도시를 장식하는 최소 비용을 한 개의 정수로 출력한다. 피터의 조건에 맞게 도시를 장식하는 것이 불가능하면 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    5 8
    1 4
    4 5
    1 5
    1 2
    1 3
    2 3
    3 5
    2 5
    
    예상 출력
    -1
    
  2. 예제 2

    입력
    6 5
    2 4
    3 5
    1 5
    3 6
    1 6
    
    예상 출력
    5
    
  3. 예제 3

    입력
    10 10
    5 8
    2 6
    3 9
    1 4
    9 10
    4 6
    5 9
    7 8
    7 10
    2 3
    
    예상 출력
    5