비순환 그래프 분해

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

문제

바이트맨은 방향 그래프를 연구하고 있다. 그는 특히 사이클이 없는 그래프를 좋아하는데, 이런 그래프에서는 많은 문제를 간단하고 효율적으로 풀 수 있기 때문이다. 그는 임의의 방향 그래프를 여러 비순환 그래프의 합으로 나타내는 방법을 찾고 있다.

주어진 방향 그래프의 간선 집합을, 각 부분집합에 속한 간선만으로 이루어진 방향 그래프가 사이클을 포함하지 않도록 하면서 가능한 한 적은 수의 부분집합으로 분할하려고 한다. 이때 필요한 부분집합의 최소 개수를 구하여라.

입력

첫째 줄에 정점의 수 nn과 간선의 수 mm이 주어진다 (1n,m100,0001 \le n, m \le 100{,}000). 정점에는 11부터 nn까지 번호가 매겨져 있다. 이어지는 mm개의 줄에는 각각 두 정수 aia_i, bib_i (1ai,bin1 \le a_i, b_i \le n, aibia_i \ne b_i)가 주어지며, 이는 정점 aia_i에서 정점 bib_i로 향하는 방향 간선을 나타낸다. 그래프에는 중복된 간선이 없다.

출력

그래프의 간선 집합을 비순환 그래프들로 분할할 때 필요한 부분집합의 최소 개수를 정수 하나로 한 줄에 출력한다.

힌트

그림은 예제를 나타낸 것이다. 원은 정점을, 선과 호(실선과 점선)는 간선을 나타낸다. 원 옆의 숫자는 정점 번호이고, 선이나 호 옆의 숫자는 간선 번호이다. 이 그래프의 간선은 두 개의 비순환 그래프로 나눌 수 있다. 실선 간선이 첫 번째 그래프를, 점선 간선이 두 번째 그래프를 이루므로, 이 그래프에 대한 답은 22이다.