다리 공원

볼록 위치의 점들로 이루어진 연결 평면 직선 그래프가 주어질 때, 어떤 다리가 하나 끊겨도 연결이 유지되도록 교차하지 않는 간선을 최소 개수로 추가한다.

어려움8그래프그리디동적 계획법아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

공원에는 작은 섬 nn개와 다리 mm개가 있다. 섬은 모두 볼록 다각형의 꼭짓점 위에 있다. 볼록 다각형은 내각이 모두 180도보다 작은 단순 다각형이다. 섬은 점이고 다리는 선분이다. 다리 하나는 섬 두 개를 잇고, 서로 다른 두 다리는 함께 쓰는 섬에서만 만난다.

다리로 모든 섬이 이어져 있어서, 어느 섬에서 출발해도 다리를 건너 나머지 섬을 모두 갈 수 있다.

섬 7개와 다리 7개가 있는 공원

어느 날 다리 하나가 끊어져 관광객이 섬에 갇혔다. 공원 관리위원회는 다리 하나가 끊어져도 모든 섬이 계속 이어져 있도록 다리를 더 놓으려고 한다. 새로 놓는 다리도 선분이고, 다른 다리와는 함께 쓰는 섬에서만 만나야 한다. 이미 다리로 이어진 두 섬은 다시 이을 수 없다. 새 선분이 원래 선분 위에 그대로 겹치기 때문이다.

ii와 섬 jj를 잇는 다리를 (i,j)(i, j)로 쓴다. 그림의 공원에는 다리 (0,1)(0, 1), (0,3)(0, 3), (1,2)(1, 2), (1,3)(1, 3), (3,6)(3, 6), (4,5)(4, 5), (5,6)(5, 6)이 있다. (3,6)(3, 6)이 끊어지면 섬은 {0,1,2,3}\{0, 1, 2, 3\}{4,5,6}\{4, 5, 6\} 두 덩어리로 나뉜다. (5,6)(5, 6)이 끊어지면 {0,1,2,3,6}\{0, 1, 2, 3, 6\}{4,5}\{4, 5\}로 나뉜다. (0,3)(0, 3)이 끊어져도 모든 섬은 이어져 있다. 다리 (2,3)(2, 3)(3,4)(3, 4)를 놓으면 어느 다리 하나가 끊어져도 모든 섬이 이어져 있다.

공원의 섬과 다리가 주어질 때, 다리 하나가 끊어져도 모든 섬이 이어져 있게 하려면 다리를 최소 몇 개 더 놓아야 하는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 섬의 개수 nn과 다리의 개수 mm이 주어진다 (3n1000003 \le n \le 100000, n1m2n3n - 1 \le m \le 2n - 3). 섬의 번호는 00부터 n1n - 1까지이고, 볼록 다각형의 경계를 반시계 방향으로 따라가면 섬이 (0,1,2,,n1)(0, 1, 2, \ldots, n - 1) 순서로 나온다.

다음 mm개 줄에는 각각 정수 iijj가 주어지며 (0i,jn10 \le i, j \le n - 1), 다리 (i,j)(i, j)를 뜻한다. 주어진 다리로 모든 섬이 이어져 있고, 서로 다른 두 다리는 함께 쓰는 섬에서만 만난다.

출력

다리 하나가 끊어져도 모든 섬이 이어져 있게 하려면 더 놓아야 하는 다리의 최소 개수를 한 줄에 출력한다.