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

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

선원 고용하기

시간 제한4초메모리 제한64 MB

요약
선원들의 요구를 방향 그래프로 나타낼 때, 나가는 간선에 대해 닫혀 있는 가장 작은 비어 있지 않은 선원 집합의 크기를 구한다.
난이도

보통10점 중 6점

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

문제

George는 어릴 적부터 뗏목을 타고 세계 일주를 하는 꿈을 품어 왔다. 이제 뗏목과 충분한 물자를 마련했고, 수영과 (상어에 대비한) 호신술도 익혔다. 올여름, 마침내 그 꿈이 이루어질 참이다.

떠나기 직전, George는 자신에게 방향 감각이 전혀 없다는 사실을 깨달았다. 도시에서라면 그럭저럭 견디겠지만, 망망대해에서는 길을 물어볼 사람조차 없다. 그래서 그는 노련한 선원을 항해사로 고용하기로 했다.

문제는 선원들이 무리 지어 다니기를 좋아한다는 점이다. 각 선원에게는 "이 동료가 함께 타지 않으면 나도 타지 않겠다"고 고집하는 동료가 몇 명씩 있다. 이 요구는 반드시 상호적이지는 않다. 예를 들어 선원 aa는 선원 bb의 동승을 요구하지만, 선원 bb는 aa가 없어도 기꺼이 배에 오를 수 있다.

George는 모든 선원과 이야기하여 누가 누구를 요구하는지 정확히 파악했다. 뗏목에는 항해사로 삼을 선원이 적어도 한 명은 필요하다. 고용한 모든 선원의 요구를 만족시키면서, George가 고용해야 하는 선원 수의 최솟값을 구하여라.

엄밀히 말해, George는 공집합이 아닌 선원 집합 SS를 고용한다. 선원 aa가 SS에 속하고 aa가 bb를 요구하면, 선원 bb도 반드시 SS에 속해야 한다. 이러한 집합 SS의 크기의 최솟값을 구하여라.

입력

첫째 줄에 공백으로 구분된 두 정수 NN과 MM이 주어진다. NN (1≤N≤1000001 \le N \le 100000)은 고용할 수 있는 선원의 수, MM (1≤M≤10000001 \le M \le 1000000)은 요구 조건의 수이다. 선원은 11번부터 NN번까지 번호가 매겨져 있다.

이어지는 MM개의 줄에는 각각 두 정수 aa와 bb (1≤a,b≤N1 \le a, b \le N, a≠ba \ne b)가 주어진다. 이 줄은 선원 aa가 선원 bb도 함께 고용되지 않으면 일을 맡지 않는다는 것을 뜻한다.

출력

George가 고용해야 하는 선원 수의 최솟값을 한 줄에 하나의 양의 정수로 출력한다.

예제3

  1. 예제 1

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

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

    입력
    2 2
    1 2
    2 1
    
    예상 출력
    2