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

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

실행 시간

시간 제한2초메모리 제한1024 MB

요약
각 작업이 모든 선행 작업의 신호를 기다리는 병렬 DAG에서, 처음과 마지막 작업을 제외한 정확히 K개 작업의 실행 시간을 0으로 만들 때 전체 완료 시간의 최솟값을 구한다.
난이도

보통10점 중 7점

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

문제

NN개의 작업을 병렬처리하는 프로그램을 개발하였다. NN개의 작업은 실행 시간이 모두 다르고, 모든 작업에는 순서가 존재한다.

하나의 작업의 실행이 끝나면 다음 작업들에 신호를 준다. 신호를 받은 작업은 이전 작업들로부터 신호를 모두 받았을 때만 실행할 수 있다.

위 그림과 같이 작업 AA, BB, CC, DD, EE가 있고 작업의 순서가 정해져 있다. 맨 처음에 작업 AA를 실행하여 작업 EE까지 실행한다. 이때, 작업 AA와 같이 맨 처음에 시작해야 하는 작업과 작업 EE와 같이 맨 마지막으로 실행되는 작업은 반드시 하나가 존재한다.

작업 AA부터 작업 EE까지 실행 시간은 순서대로 1초, 2초, 3초, 2초, 1초라고 가정하자. 5개의 작업이 실행되는 순서는 다음과 같다.

  • 0초 : 먼저, 작업 AA가 실행된다.
  • 1초 : 작업 AA가 1초 동안 실행 후 작업 BB, CC, DD한테 작업이 끝났다고 신호를 준다.
  • 1초 : 신호를 받은 작업 BB, CC, DD가 실행 조건에 만족하므로 동시에 시작된다.
  • 3초 : 작업 BB와 작업 DD는 실행 시간이 2초이므로 2초 후에 다음 작업인 작업 EE에 신호를 보낸다.
  • 3초 : 신호를 받은 작업 EE는 이전 작업들 중 작업 CC에 신호를 받지 못했으므로 대기한다.
  • 4초 : 작업 CC는 실행 시간이 3초이므로 작업 CC가 실행되고 3초 후에 작업 EE에 신호를 보낸다.
  • 4초 : 작업 EE는 모든 신호를 받았으므로 실행이 된다. 작업 EE는 실행시간이 1초이다.
  • 5초 : 작업 EE가 종료되어 모든 작업의 실행이 종료되었다.

따라서, 작업 EE가 5초 후에 실행 종료된다.

그런데 해당 프로그램에서 맨 처음에 시작해야 하는 작업과 맨 마지막으로 실행되는 작업을 제외한 나머지 N−2N-2개의 작업 중 정확히 KK개를 실행 시간을 0초로 강제로 바꿔도 프로그램에 아무런 문제가 발생하지 않는다는 것을 확인했다.

정확히 KK개의 작업의 실행시간을 강제로 0초로 바꾸었을 때 모든 작업이 완료되는 데에 최소 시간을 구하시오.

입력

작업의 개수 NN, 작업 순서를 알려주는 개수 MM, 실행 시간을 강제로 0초로 바꿀 수 있는 작업 개수 KK가 공백으로 구분되어 주어진다. 이때, 작업 순서는 하나의 작업이 끝난 이후 어떤 작업이 실행되는지 알려주는 정보이다.

2번째 줄에는 NN개 작업에 대한 실행 시간이 공백으로 구분되어 주어진다.

3번째 줄부터 M+2M + 2줄까지 작업 순서에 대한 정보가 들어온다. 각 정보는 두 개의 정수 SS, EE가 공백으로 구분되어 주어지며, 작업 SS가 끝난 후 작업 EE가 실행된다는 의미이다.

작업의 시작 번호는 항상 1이고 이 작업으로 모든 작업이 실행되는 것을 보장한다.

작업 AA, BB, CC가 있다고 했을 때, 작업의 순서가 A→B→C→AA \rightarrow B \rightarrow C \rightarrow A와 같이 사이클을 이루는 경우가 없는 것을 보장한다.

출력

정확히 KK개 작업의 실행 시간을 0초로 바꿨을 때, 모든 작업이 완료되는 데에 걸리는 최소 시간을 출력한다.

제한

  • 2≤N≤1002 \le N \le 100
  • N−1≤M≤500N - 1 \le M \le 500
  • 0≤K≤min(N−2,3)0 \le K \le min(N - 2, 3)
  • 1≤S,E≤N1 \le S, E \le N
  • 1≤1 \le 실행 시간 ≤1,000,000\le 1,000,000, 실행 시간은 정수

예제2

  1. 예제 1

    입력
    5 6 1
    1 2 3 2 1
    1 2
    1 3
    1 4
    2 5
    3 5
    4 5
    
    예상 출력
    4
    
  2. 예제 2

    입력
    5 6 0
    1 2 3 2 1
    1 2
    1 3
    1 4
    2 5
    3 5
    4 5
    
    예상 출력
    5