만드는 중입니다

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

보물 사냥

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

요약
1번 방에서 시작해 지나는 방의 보물 합이 최대가 되는 경로를 구합니다. 방 a의 레버를 당기면 x와 y 사이에 양방향 통로가 생깁니다.
난이도

보통10점 중 7점

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

문제

포닉스는 마침내 보물 지도를 손에 넣었다. 포닉스는 그 지도를 들고 보물이 가득한 미궁으로 들어갔다.

지도에 따르면 미궁은 NN개의 방과 두 방을 잇는 MM개의 일방통행 길로 이루어져 있다. 방에는 1번부터 NN번까지 번호가 붙어 있고, ii번 방에는 가치 bib_i의 보물이 있다. 미궁은 1번 방에서 입장할 수 있다. 탈출 키트를 이용하면 아무 방에서나 미궁을 빠져나갈 수 있다. 다만 탈출하면 미궁이 무너져 다시 들어갈 수 없다.

이 미궁의 aa번 방에는 숨겨진 레버가 있다. 그 방에 가서 레버를 당기면 xx번 방과 yy번 방을 잇는 숨겨진 양방향 통로가 나타난다.

포닉스는 가져 나오는 보물의 가치 합이 최대가 되도록 하려고 한다. 포닉스가 얻을 수 있는 보물 가치의 최댓값은 얼마인가?

입력

첫 번째 줄에 방의 수 NN과 일방통행 길의 수 MM이 공백으로 구분되어 주어진다. (1≤N≤100 0001 \le N \le 100\ 000, 1≤M≤300 0001 \le M \le 300\ 000)

두 번째 줄에 각 방의 보물 가치를 나타내는 NN개의 정수 b1,b2,…,bNb_1, b_2, \ldots, b_N이 공백으로 구분되어 주어진다. (0≤bi≤1090 \le b_i \le 10^9)

세 번째 줄부터 MM개의 줄에 걸쳐 일방통행 길의 시작 방 uiu_i와 도착 방 viv_i가 공백으로 구분되어 주어진다. (1≤ui,vi≤N1 \le u_i, v_i \le N, ui≠viu_i \neq v_i)

서로 다른 두 방 pp, qq에 대해 pp를 시작 방, qq를 도착 방으로 하는 일방통행 길은 최대 1개임이 보장된다. (1≤p,q≤N1 \le p, q \le N, p≠qp \neq q)

M+3M+3번째 줄에 레버가 있는 방 번호 aa와 레버를 당길 때 등장하는 양방향 통로의 양 끝 방 xx, yy가 공백으로 구분되어 주어진다. xx번 방에서 yy번 방으로 향하는 일방통행 길이나 yy번 방에서 xx번 방으로 향하는 일방통행 길은 이미 존재할 수 있다. (1≤a,x,y≤N1 \le a, x, y \le N, x≠yx \neq y)

출력

한 번의 탐험으로 얻을 수 있는 보물 가치 합의 최댓값을 출력한다.

예제1

  1. 예제 1

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