비순환 그래프 분해
시간 제한2초메모리 제한512 MB
방향 그래프가 주어질 때, 모든 간선을 사이클 없는 부분 그래프로 나누는 최소 개수를 구한다.
문제
바이트맨은 방향 그래프를 연구하고 있다. 그는 특히 사이클이 없는 그래프를 좋아하는데, 이런 그래프에서는 많은 문제를 간단하고 효율적으로 풀 수 있기 때문이다. 그는 임의의 방향 그래프를 여러 비순환 그래프의 합으로 나타내는 방법을 찾고 있다.
주어진 방향 그래프의 간선 집합을, 각 부분집합에 속한 간선만으로 이루어진 방향 그래프가 사이클을 포함하지 않도록 하면서 가능한 한 적은 수의 부분집합으로 분할하려고 한다. 이때 필요한 부분집합의 최소 개수를 구하여라.
입력
첫째 줄에 정점의 수 과 간선의 수 이 주어진다 (). 정점에는 부터 까지 번호가 매겨져 있다. 이어지는 개의 줄에는 각각 두 정수 , (, )가 주어지며, 이는 정점 에서 정점 로 향하는 방향 간선을 나타낸다. 그래프에는 중복된 간선이 없다.
출력
그래프의 간선 집합을 비순환 그래프들로 분할할 때 필요한 부분집합의 최소 개수를 정수 하나로 한 줄에 출력한다.
힌트

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