아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Burnished Security Updates

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

요약
그래프에서 독립 집합이면서 동시에 정점 덮개인 최소 집합의 크기를 구하고, 존재하지 않으면 -1을 출력한다.
난이도

보통10점 중 7점

유형
그래프, DFS, 그리디, 구현
정답자
아직 제출이 없습니다

문제

Alexander는 자신의 컴퓨터에 Burnished Security Updates (BSU)라는 중요한 업데이트 패키지를 설치하려고 한다. 그가 가진 네트워크는 nn대의 컴퓨터가 mm개의 양방향 케이블로 연결되어 있다.

결국 BSU는 네트워크의 모든 컴퓨터에 설치될 예정이다. 하지만 Alexander는 업데이트 이후 시스템이 어떻게 동작할지 알 수 없어, 먼저 다음 조건을 만족하는 비어 있지 않은 컴퓨터 집합에만 업데이트를 설치하려고 한다.

  • 업데이트된 두 컴퓨터가 케이블로 직접 연결되어 있지 않다.
  • 각 케이블은 양 끝점 중 적어도 하나가 업데이트된 컴퓨터여야 한다.
  • 업데이트된 컴퓨터 집합의 크기는 가능한 한 작아야 한다.

컴퓨터 네트워크를 그래프로 나타내면, Alexander는 그래프의 독립 집합이면서 동시에 같은 그래프의 정점 커버가 되는 집합을 찾으려고 한다. 그러한 집합 중에서 크기가 가장 작은 것을 고르려고 한다.

이제 Alexander를 도와 BSU가 설치될 컴퓨터의 수를 구하자. 위 조건을 만족하는 집합을 아예 찾을 수 없는 경우도 있다.

입력

첫 번째 줄에는 컴퓨터의 수 nn과 케이블의 수 mm이 주어진다 (2≤n≤3⋅1052 \le n \le 3 \cdot 10^5, 1≤m≤3⋅1051 \le m \le 3 \cdot 10^5).

다음 mm개의 줄에는 각각 두 정수 xix_i와 yiy_i가 주어지며, 이는 ii번째 케이블의 양 끝점이다 (1≤xi,yi≤n1 \le x_i, y_i \le n, xi≠yix_i \ne y_i).

어떤 두 컴퓨터 사이에도 케이블이 최대 하나만 연결되어 있음이 보장된다.

출력

그러한 집합이 없으면 −1-1을 출력한다.

그렇지 않으면 조건을 만족하는 컴퓨터 집합의 크기를 출력한다.

예제3

  1. 예제 1

    입력
    4 2
    1 2
    3 4
    
    예상 출력
    2
    
  2. 예제 2

    입력
    4 4
    1 2
    2 3
    3 4
    1 4
    
    예상 출력
    2
    
  3. 예제 3

    입력
    4 3
    1 2
    2 3
    1 3
    
    예상 출력
    -1