전장의 도로 놓기

각 테스트 케이스마다 모든 도로를 정확히 한 번씩 지나 출발 도시로 돌아오는 경로가 가능하도록 추가할 도로 수의 최솟값을 구합니다.

보통6그래프유니온 파인드수학아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

전장은 도시 NN개와 양방향 도로 RR개로 이루어져 있다. 원하는 도시 CC 하나를 골라 출발해서 RR개의 도로를 각각 정확히 한 번씩 지난 뒤 다시 CC로 돌아오는 것이 목표다.

그런 이동이 불가능하면 도로를 새로 놓아 가능하게 만들어야 하고, 새로 놓는 도로의 개수는 최소여야 한다. 같은 두 도시를 잇는 도로가 여러 개 있을 수 있다. 새 도로는 서로 다른 두 도시 사이라면 어디든 놓을 수 있고, 이미 도로가 있는 두 도시 사이에도 다시 놓을 수 있다.

각 테스트 케이스마다 새로 놓아야 하는 도로의 최소 개수를 구한다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어지고, 각 테스트 케이스는 다음과 같다.

  • 한 줄에 도시의 수 NN
  • 한 줄에 도로의 수 RR
  • 도로를 나타내는 RR개의 줄. 각 줄에는 그 도로의 두 끝 도시 AABB가 공백 하나로 구분되어 주어진다. AABB는 서로 다른 정수이고 0A,B<N0 \le A, B < N이다.

제한

  • 1T301 \le T \le 30
  • 2N10002 \le N \le 1000
  • 1R1041 \le R \le 10^4

출력

각 테스트 케이스마다 한 줄에 Case #x: 를 먼저 출력하고, 그 뒤에 새로 놓아야 하는 도로의 최소 개수를 출력한다. 여기서 xx는 테스트 케이스 번호로 1부터 시작한다.