아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

우유 짜기 일정

면접 대비

시간 제한1초메모리 제한128 MB

요약
각 소의 착유 시간과 선후 관계가 주어질 때, 무한한 일꾼이 병렬로 작업할 수 있다고 가정하고 모든 소의 착유를 끝내는 최소 시간을 구한다.
난이도

보통10점 중 5점

유형
그래프, 위상 정렬, 동적 계획법, DFS
정답자
아직 제출이 없습니다

문제

농부 John의 소 NN마리(1≤N≤10,0001 \le N \le 10{,}000)에는 11부터 NN까지 번호가 매겨져 있다. 소 ii의 젖을 짜는 데는 T(i)T(i)의 시간이 걸린다. 그런데 외양간 구조 때문에 어떤 소는 다른 소보다 먼저 젖을 짜야 한다. 소 AA를 소 BB보다 먼저 짜야 한다면, John은 AA의 젖을 완전히 다 짠 뒤에야 BB를 시작할 수 있다.

John은 최대한 빨리 끝내기 위해 충분히 많은 일꾼을 고용했다. 즉, 몇 마리든 동시에 젖을 짤 수 있다. 하지만 여러 소를 동시에 짤 수 있어도, 특정 소를 먼저 짜야 한다는 제약 때문에 전체 과정의 속도에는 한계가 있다. 모든 소의 젖을 짜는 데 필요한 최소 전체 시간을 구하여라.

입력

  • 첫째 줄: 공백으로 구분된 두 정수 NN(소의 수)과 MM(제약의 수, 1≤M≤50,0001 \le M \le 50{,}000).
  • 22번째 줄부터 N+1N+1번째 줄까지: i+1i+1번째 줄에 T(i)T(i)의 값(1≤T(i)≤100,0001 \le T(i) \le 100{,}000).
  • N+2N+2번째 줄부터 N+M+1N+M+1번째 줄까지: 각 줄에 공백으로 구분된 두 정수 AA와 BB가 있으며, 소 AA의 젖을 완전히 다 짠 뒤에야 소 BB를 시작할 수 있음을 뜻한다. 이 제약들은 절대 순환을 이루지 않으므로 해는 항상 존재한다.

출력

  • 첫째 줄: 모든 소의 젖을 짜는 데 필요한 최소 시간.

힌트

첫 번째 예제에서는 소가 33마리이고, 각 소의 젖을 짜는 시간은 각각 1010, 55, 66이다. 소 33의 젖을 완전히 다 짠 뒤에야 소 22를 시작할 수 있다.

소 11과 소 33은 처음에 동시에 젖을 짤 수 있다. 소 33이 끝나면 소 22를 시작할 수 있다. 모든 소는 1111의 시간이 지난 뒤 젖 짜기가 끝난다.

예제1

  1. 예제 1

    입력
    3 1
    10
    5
    6
    3 2
    
    예상 출력
    11