우유 짜기 일정
면접 대비시간 제한1초메모리 제한128 MB
각 소의 착유 시간과 선후 관계가 주어질 때, 무한한 일꾼이 병렬로 작업할 수 있다고 가정하고 모든 소의 착유를 끝내는 최소 시간을 구한다.
문제
농부 John의 소 마리()에는 부터 까지 번호가 매겨져 있다. 소 의 젖을 짜는 데는 의 시간이 걸린다. 그런데 외양간 구조 때문에 어떤 소는 다른 소보다 먼저 젖을 짜야 한다. 소 를 소 보다 먼저 짜야 한다면, John은 의 젖을 완전히 다 짠 뒤에야 를 시작할 수 있다.
John은 최대한 빨리 끝내기 위해 충분히 많은 일꾼을 고용했다. 즉, 몇 마리든 동시에 젖을 짤 수 있다. 하지만 여러 소를 동시에 짤 수 있어도, 특정 소를 먼저 짜야 한다는 제약 때문에 전체 과정의 속도에는 한계가 있다. 모든 소의 젖을 짜는 데 필요한 최소 전체 시간을 구하여라.
입력
- 첫째 줄: 공백으로 구분된 두 정수 (소의 수)과 (제약의 수, ).
- 번째 줄부터 번째 줄까지: 번째 줄에 의 값().
- 번째 줄부터 번째 줄까지: 각 줄에 공백으로 구분된 두 정수 와 가 있으며, 소 의 젖을 완전히 다 짠 뒤에야 소 를 시작할 수 있음을 뜻한다. 이 제약들은 절대 순환을 이루지 않으므로 해는 항상 존재한다.
출력
- 첫째 줄: 모든 소의 젖을 짜는 데 필요한 최소 시간.
힌트
첫 번째 예제에서는 소가 마리이고, 각 소의 젖을 짜는 시간은 각각 , , 이다. 소 의 젖을 완전히 다 짠 뒤에야 소 를 시작할 수 있다.
소 과 소 은 처음에 동시에 젖을 짤 수 있다. 소 이 끝나면 소 를 시작할 수 있다. 모든 소는 의 시간이 지난 뒤 젖 짜기가 끝난다.