통행료
시간 제한1초메모리 제한128 MB
전체 그래프가 아니라 임의의 부분 그래프에서 각 선택된 마을이 정확히 하나의 인접 도로에서 통행료를 징수하고 한 도로를 양 끝 마을이 동시에 징수하지 못할 때, 선택 가능한 마을 수의 최댓값을 구한다.
문제
바이트오티아 왕국에는 개의 마을이 있고, 이 마을들은 개의 양방향 도로로 연결되어 있다. 각 도로는 서로 다른 두 마을을 직접 잇고, 어떤 두 마을도 두 개 이상의 도로로 연결되지 않는다(도로가 터널이나 고가로를 지날 수는 있다).
각 마을은 지나는 여행자에게 통행료를 받고 싶어 하지만, 상인들의 불만을 달래기 위해 왕은 다음 두 규칙으로 이 권한을 제한한다.
- 통행료를 걷는 마을은 자신에게 닿는 도로 가운데 정확히 하나에서만 통행료를 걷을 수 있다. 여행자가 그 도로를 어느 방향으로 지나든 상관없다.
- 하나의 도로에 대해서는 그 도로의 양 끝 마을 중 최대 한 곳만 통행료를 걷을 수 있다. 한 도로에서 양쪽 마을이 동시에 통행료를 걷을 수는 없다.
이 규칙 때문에 어떤 마을은 통행료를 걷을 도로가 남지 않을 수도 있다. 동시에 통행료를 걷을 수 있는 마을의 최대 개수를 구하여라.
다음을 수행하는 프로그램을 작성하라.
- 표준 입력에서 바이트오티아 도로망의 정보를 읽는다.
- 통행료를 걷을 수 있는 마을의 최대 개수를 계산한다.
- 그 값을 표준 출력에 쓴다.
입력
첫째 줄에 두 정수 과 이 주어진다(, ). 각각 마을의 수와 도로의 수이다. 마을은 번부터 번까지 번호가 매겨져 있다. 이어지는 개의 줄에는 각각 두 정수 와 가 주어지며(), 마을 와 가 도로로 직접 연결되어 있음을 뜻한다.
출력
위 규칙을 지키면서 통행료를 걷을 수 있는 마을의 최대 개수를 정수 하나로 출력한다.
힌트

그림에서 화살표는 각 도로에서 통행료를 걷는 마을을 가리킨다. 모든 마을은 정확히 하나의 도로에서 통행료를 걷고, 어떤 도로도 양쪽 마을에게 동시에 통행료를 받지 않는다. 마을 과 를 잇는 도로는 아무에게도 통행료를 걷지 않는다. 이 도로망에서는 네 마을이 모두 통행료를 걷을 수 있으므로 답은 이다.