선원 고용하기

아직 제출이 없습니다시간 제한4초메모리 제한64 MB

문제

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

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

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

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

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

입력

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

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

출력

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