만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

해킹

면접 대비

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

요약
네트워크에서 X대를 동시에 해킹할 때 보안 시스템이 도달하기 전까지 얻을 수 있는 최대 금액을 구합니다. 감염되지 않는 컴퓨터가 돈을 벌 수 있으면 -1을 출력합니다.
난이도

보통10점 중 5점

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

문제

네트워크 안에는 NN개의 컴퓨터가 있다. 각 컴퓨터는 1,2,⋯ ,N1, 2, \cdots, N번으로 번호가 붙어 있다. 서로 다른 두 컴퓨터 쌍을 잇는 통신망이 MM개 있다. ii번째 통신망은 SiS_i번 컴퓨터와 EiE_i번 컴퓨터를 잇는다. 같은 쌍의 두 컴퓨터를 잇는 통신망은 최대 하나이다.

당신은 해커이다. 돈을 얻기 위해 XX개의 컴퓨터를 동시에 해킹하려고 한다. ii번 컴퓨터를 해킹하면 1분 뒤부터 매분 AiA_i만큼의 돈을 그 컴퓨터에서 가져올 수 있다.

정부는 당신이 해킹하고 0.5분 뒤 B1,B2,⋯ ,BYB_1, B_2, \cdots, B_Y번 컴퓨터에 보안 시스템을 설치할 계획이다. 해킹한 컴퓨터에 보안 시스템이 설치되면 그 컴퓨터에서는 더 이상 돈을 가져올 수 없다. 보안 시스템은 통신망을 따라 연쇄적으로 퍼진다. 어떤 컴퓨터에 보안 시스템이 설치되면, 1분 뒤 그 컴퓨터와 통신망으로 직접 연결된 모든 컴퓨터에 보안 시스템이 자동으로 설치된다. 0.5분 뒤 보안 시스템이 설치될 컴퓨터를 해킹하면 그 컴퓨터에서 돈을 가져올 수 없다.

정부의 계획을 알게 된 당신은 보안 시스템을 피해 최대한 많은 돈을 얻으려고 한다. 해킹한 컴퓨터가 모두 보안 시스템 때문에 돈을 얻을 수 없게 되기 전까지 얼마나 많은 돈을 얻을 수 있는지 구하라.

입력

첫 번째 줄에 NN, MM, XX, YY가 공백으로 구분되어 주어진다.

두 번째 줄에는 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 공백으로 구분되어 주어진다.

세 번째 줄부터 MM개의 줄에는 통신망이 주어진다. ii번째 줄에는 SiS_i와 EiE_i가 공백으로 구분되어 주어진다.

마지막 줄에는 B1,B2,⋯ ,BYB_1, B_2, \cdots, B_Y가 공백으로 구분되어 주어진다.

출력

최대로 얻을 수 있는 돈을 출력한다. 무한히 많은 돈을 얻을 수 있다면 대신 −1-1을 출력한다.

제한

  • 1≤N≤500 0001 \leq N \leq 500\,000
  • 0≤M≤500 0000 \leq M \leq 500\,000
  • 1≤X,Y≤N1 \leq X, Y \leq N
  • 0≤Ai≤500 0000 \leq A_i \leq 500\,000 (1≤i≤N1 \leq i \leq N)
  • 1≤Si,Ei≤N1 \leq S_i, E_i \leq N, Si≠EiS_i \neq E_i (1≤i≤M1 \leq i \leq M)
  • i≠ji \neq j 이면 (Si,Ei)≠(Sj,Ej)(S_i, E_i) \neq (S_j, E_j) 이고 (Si,Ei)≠(Ej,Sj)(S_i, E_i) \neq (E_j, S_j) 이다.
  • 1≤Bi≤N1 \leq B_i \leq N (1≤i≤Y1 \leq i \leq Y)
  • i≠ji \neq j 이면 Bi≠BjB_i \neq B_j

예제2

  1. 예제 1

    입력
    5 4 2 3
    1 10 100 1000 10000
    1 4
    2 3
    3 4
    4 2
    2 3 5
    
    예상 출력
    1002
    
  2. 예제 2

    입력
    3 0 1 1
    1 0 0
    2
    
    예상 출력
    -1