Burnished Security Updates
시간 제한1초메모리 제한512 MB
그래프에서 독립 집합이면서 동시에 정점 덮개인 최소 집합의 크기를 구하고, 존재하지 않으면 -1을 출력한다.
문제
Alexander는 자신의 컴퓨터에 Burnished Security Updates (BSU)라는 중요한 업데이트 패키지를 설치하려고 한다. 그가 가진 네트워크는 대의 컴퓨터가 개의 양방향 케이블로 연결되어 있다.
결국 BSU는 네트워크의 모든 컴퓨터에 설치될 예정이다. 하지만 Alexander는 업데이트 이후 시스템이 어떻게 동작할지 알 수 없어, 먼저 다음 조건을 만족하는 비어 있지 않은 컴퓨터 집합에만 업데이트를 설치하려고 한다.
- 업데이트된 두 컴퓨터가 케이블로 직접 연결되어 있지 않다.
- 각 케이블은 양 끝점 중 적어도 하나가 업데이트된 컴퓨터여야 한다.
- 업데이트된 컴퓨터 집합의 크기는 가능한 한 작아야 한다.
컴퓨터 네트워크를 그래프로 나타내면, Alexander는 그래프의 독립 집합이면서 동시에 같은 그래프의 정점 커버가 되는 집합을 찾으려고 한다. 그러한 집합 중에서 크기가 가장 작은 것을 고르려고 한다.
이제 Alexander를 도와 BSU가 설치될 컴퓨터의 수를 구하자. 위 조건을 만족하는 집합을 아예 찾을 수 없는 경우도 있다.
입력
첫 번째 줄에는 컴퓨터의 수 과 케이블의 수 이 주어진다 (, ).
다음 개의 줄에는 각각 두 정수 와 가 주어지며, 이는 번째 케이블의 양 끝점이다 (, ).
어떤 두 컴퓨터 사이에도 케이블이 최대 하나만 연결되어 있음이 보장된다.
출력
그러한 집합이 없으면 을 출력한다.
그렇지 않으면 조건을 만족하는 컴퓨터 집합의 크기를 출력한다.