George는 어릴 적부터 뗏목을 타고 세계 일주를 하는 꿈을 품어 왔다. 이제 뗏목과 충분한 물자를 마련했고, 수영과 (상어에 대비한) 호신술도 익혔다. 올여름, 마침내 그 꿈이 이루어질 참이다.
떠나기 직전, George는 자신에게 방향 감각이 전혀 없다는 사실을 깨달았다. 도시에서라면 그럭저럭 견디겠지만, 망망대해에서는 길을 물어볼 사람조차 없다. 그래서 그는 노련한 선원을 항해사로 고용하기로 했다.
문제는 선원들이 무리 지어 다니기를 좋아한다는 점이다. 각 선원에게는 "이 동료가 함께 타지 않으면 나도 타지 않겠다"고 고집하는 동료가 몇 명씩 있다. 이 요구는 반드시 상호적이지는 않다. 예를 들어 선원 a는 선원 b의 동승을 요구하지만, 선원 b는 a가 없어도 기꺼이 배에 오를 수 있다.
George는 모든 선원과 이야기하여 누가 누구를 요구하는지 정확히 파악했다. 뗏목에는 항해사로 삼을 선원이 적어도 한 명은 필요하다. 고용한 모든 선원의 요구를 만족시키면서, George가 고용해야 하는 선원 수의 최솟값을 구하여라.
엄밀히 말해, George는 공집합이 아닌 선원 집합 S를 고용한다. 선원 a가 S에 속하고 a가 b를 요구하면, 선원 b도 반드시 S에 속해야 한다. 이러한 집합 S의 크기의 최솟값을 구하여라.
첫째 줄에 공백으로 구분된 두 정수 N과 M이 주어진다. N (1≤N≤100000)은 고용할 수 있는 선원의 수, M (1≤M≤1000000)은 요구 조건의 수이다. 선원은 1번부터 N번까지 번호가 매겨져 있다.
이어지는 M개의 줄에는 각각 두 정수 a와 b (1≤a,b≤N, a=b)가 주어진다. 이 줄은 선원 a가 선원 b도 함께 고용되지 않으면 일을 맡지 않는다는 것을 뜻한다.
George가 고용해야 하는 선원 수의 최솟값을 한 줄에 하나의 양의 정수로 출력한다.