최소 체인 커버
시간 제한2초메모리 제한512 MB
사이클이 없는 방향 그래프에서 모든 정점을 덮는 정점 서로소 방향 경로의 최소 개수를 구한다.
문제
그래프에서 체인은 이웃한 두 정점 사이에 간선이 있는 정점 나열이다. 같은 정점이 여러 번 나올 수도 있고, 정점 하나만 있어도 체인이다.
사이클이 없는 방향 그래프가 주어진다. 모든 정점을 빠짐없이 덮으려면 체인이 최소 몇 개 필요한지 구하여라.
서로 다른 두 체인은 정점을 공유할 수 없다. 또 체인 가 되려면 모든 에 대해 에서 로 가는 간선이 있어야 한다. 간선은 방향을 거슬러 갈 수 없다.
입력
첫째 줄에 정점의 개수 ()과 간선의 개수 ()이 주어진다. 정점은 번부터 번까지 번호가 매겨져 있다.
둘째 줄부터 개의 줄에 간선 정보 , 가 주어진다. 에서 로 가는 방향 간선이라는 뜻이다. 같은 간선이 두 번 이상 주어질 수 있다.
주어지는 그래프에는 사이클이 없다.
출력
모든 정점을 덮는 데 필요한 체인 개수의 최솟값을 한 줄에 출력한다.
힌트
첫 번째 예제는 과 , 두 체인으로 일곱 정점을 모두 덮는다.