블랙 기업

시간 제한5초메모리 제한512 MB

요약
모든 간과 한 정점을 공유하는 두 간에서 두 끝점의 크기 관계가 기여도 순서와 일치하도록 양의 급여를 정하고 그 합을 최소화합니다.
난이도

어려움10점 중 9점

유형
그래프, 위상 정렬, 그리디, 정수론
정답자
아직 제출이 없습니다

문제

JAG Company는 착취 기업(착취 기업은 일본어로 "burakku kigyo"라고 부른다)이고, 당신은 이 회사의 CEO다.

당신은 NN명의 직원(직원은 11부터 NN까지 번호가 붙어 있다)의 급여를 최대한 낮게 정하려고 한다. 각 직원의 급여는 0보다 큰 양의 정수여야 한다. 이때 직원의 기여도에 주의해야 한다. 직원 ii의 기여도 c_ic\_i가 직원 jj의 기여도 c_jc\_j보다 크면, 직원 ii는 직원 jj의 급여보다 높은 급여를 받아야 한다. 이 조건이 만족되지 않으면 직원이 자기 급여에 불만을 제기할 수 있다.

하지만 모든 직원 쌍에서 이 조건이 만족될 필요는 없다. 각 직원은 자신과 가까운 직원의 기여도와 급여만 알 수 있기 때문이다. 따라서 다음 두 조건이 만족되는 한 직원은 자기 급여에 대해 당신에게 불만을 제기하지 않는다.

  • 직원 ii와 jj가 서로 가까우면 c_i<c_j⇔p_i<p_jc\_i < c\_j \Leftrightarrow p\_i < p\_j가 만족되어야 한다. 여기서 p_ip\_i는 직원 ii의 급여다.
  • 직원 ii가 직원 jj와 kk에 가까우면 c_j<c_k⇔p_j<p_kc\_j < c\_k \Leftrightarrow p\_j < p\_k가 만족되어야 한다.

어떤 직원도 자기 급여에 불만을 제기하지 않도록 전체 직원 급여 합의 최솟값을 계산하는 프로그램을 작성하라.

입력

각 입력은 다음과 같은 형식으로 주어진다.

$N$

$c_1$ ... $c_N$

$M$

$a_1$ $b_1$

...

$a_M$ $b_M$

첫째 줄에는 정수 NN (1≤N≤100,0001 \le N \le 100{,}000)이 주어지며, 직원의 수를 나타낸다. 둘째 줄에는 NN개의 정수 c_ic\_i (1≤c_i≤100,0001 \leq c\_i \leq 100{,}000)가 주어지며, 직원 ii의 기여도를 나타낸다.

셋째 줄에는 정수 MM (0≤M≤200,0000 \leq M \leq 200{,}000)이 주어지며, 관계의 수를 나타낸다. 이어지는 MM개의 줄 각각에는 두 정수 a_ia\_i와 b_ib\_i (a_i≠b_ia\_i \neq b\_i, 1≤a_i,b_i≤N1 \leq a\_i, b\_i \leq N)가 주어진다. 이는 직원 a_ia\_i와 b_ib\_i가 서로 가깝다는 뜻이다. 각 직원 쌍 사이에 존재하는 관계는 최대 하나다.

출력

전체 직원 급여 합의 최솟값을 한 줄에 출력한다.

예제5

  1. 예제 1

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

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

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

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

    입력
    6
    4 3 2 1 5 3
    7
    4 2
    1 5
    2 6
    6 5
    4 1
    1 6
    6 3
    
    예상 출력
    13