만드는 중입니다

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

두 색으로 칠하기

면접 대비

시간 제한1초메모리 제한128 MB

요약
모든 간선의 양 끝점이 서로 다른 색을 갖도록 두 가지 색으로 칠하는 방법 수를 세고 이분 그래프가 아니면 -1을 출력합니다.
난이도

쉬움10점 중 3점

유형
BFS, 그래프
정답자
아직 제출이 없습니다

문제

무방향 그래프가 주어진다. 두 색 A와 B만 써서 모든 정점을 칠하려고 한다. 간선으로 이어진 두 정점은 색이 서로 달라야 한다.

조건을 만족하는 색칠이 몇 가지인지 구한다. 두 색은 서로 구별하므로, 정점 하나라도 색이 다르면 다른 색칠로 센다. 두 색을 모두 쓸 필요는 없다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다.

각 테스트 케이스의 첫째 줄에는 정점의 개수 VV (1≤V≤301 \le V \le 30)와 간선의 개수 EE (0≤E≤10000 \le E \le 1000)가 주어진다. 이어지는 EE개의 줄에는 두 정수 aa, bb (0≤a≤V−10 \le a \le V-1, 0≤b≤V−10 \le b \le V-1)가 주어진다. 정점 aa와 정점 bb를 잇는 양방향 간선이 있다는 뜻이다. 자기 자신을 잇는 간선과 중복된 간선은 없다.

테스트 케이스 사이에는 빈 줄이 올 수 있고, 입력의 마지막 줄도 빈 줄일 수 있다.

출력

각 테스트 케이스마다 그래프를 두 색으로 칠하는 방법의 수를 한 줄에 출력한다. 두 색으로 칠할 수 없으면 -1을 출력한다.

예제1

  1. 예제 1

    입력
    4
    5 5
    0 1
    0 4
    1 2
    2 3
    3 0
    
    3 3
    0 1
    1 2
    2 0
    
    6 7
    0 1
    1 2
    2 3
    3 0
    4 0
    4 5
    5 1
    
    2 0
    
    예상 출력
    2
    -1
    2
    4