보물 사냥
시간 제한2초메모리 제한1024 MB
1번 방에서 시작해 지나는 방의 보물 합이 최대가 되는 경로를 구합니다. 방 a의 레버를 당기면 x와 y 사이에 양방향 통로가 생깁니다.
문제
포닉스는 마침내 보물 지도를 손에 넣었다. 포닉스는 그 지도를 들고 보물이 가득한 미궁으로 들어갔다.
지도에 따르면 미궁은 개의 방과 두 방을 잇는 개의 일방통행 길로 이루어져 있다. 방에는 1번부터 번까지 번호가 붙어 있고, 번 방에는 가치 의 보물이 있다. 미궁은 1번 방에서 입장할 수 있다. 탈출 키트를 이용하면 아무 방에서나 미궁을 빠져나갈 수 있다. 다만 탈출하면 미궁이 무너져 다시 들어갈 수 없다.
이 미궁의 번 방에는 숨겨진 레버가 있다. 그 방에 가서 레버를 당기면 번 방과 번 방을 잇는 숨겨진 양방향 통로가 나타난다.
포닉스는 가져 나오는 보물의 가치 합이 최대가 되도록 하려고 한다. 포닉스가 얻을 수 있는 보물 가치의 최댓값은 얼마인가?
입력
첫 번째 줄에 방의 수 과 일방통행 길의 수 이 공백으로 구분되어 주어진다. (, )
두 번째 줄에 각 방의 보물 가치를 나타내는 개의 정수 이 공백으로 구분되어 주어진다. ()
세 번째 줄부터 개의 줄에 걸쳐 일방통행 길의 시작 방 와 도착 방 가 공백으로 구분되어 주어진다. (, )
서로 다른 두 방 , 에 대해 를 시작 방, 를 도착 방으로 하는 일방통행 길은 최대 1개임이 보장된다. (, )
번째 줄에 레버가 있는 방 번호 와 레버를 당길 때 등장하는 양방향 통로의 양 끝 방 , 가 공백으로 구분되어 주어진다. 번 방에서 번 방으로 향하는 일방통행 길이나 번 방에서 번 방으로 향하는 일방통행 길은 이미 존재할 수 있다. (, )
출력
한 번의 탐험으로 얻을 수 있는 보물 가치 합의 최댓값을 출력한다.