ATM

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

요약
각 교차점에 현금이 있는 방향 그래프에서 시작점에서 식당까지 걷는 동안 방문한 교차점의 현금을 한 번씩만 합산해 얻을 수 있는 최댓값을 구한다.
난이도

어려움10점 중 8점

유형
그래프, 최단 경로, 동적 계획법, 그리디
정답자
아직 제출이 없습니다

문제

인도의 도시 시루세리에서는 모든 도로가 일방통행이다. 도로가 만나는 모든 교차로에는 시루세리 은행의 현금 입출금기(ATM)가 하나씩 설치되어 있다. 이 도시에는 유명한 레스토랑 체인 아웃백 커리 하우스가 있는데, 각 지점은 교차로에만 있으며(모든 교차로에 지점이 있는 것은 아니다) 현금만 받는다.

시루세리에 사는 반디치는 오늘 오후 이 레스토랑에서 가족 파티를 열려고 한다. 가진 현금이 부족해서, 레스토랑으로 가는 길에 최대한 많은 현금을 ATM에서 인출하려고 한다. 그는 자신의 집이 있는 교차로에서 출발해 차로 이동하며, 지나가는 교차로의 ATM에 들어 있는 현금을 전부 인출한다. 최종 목적지는 아웃백 커리 하우스 지점이 있는 교차로 중 어느 곳이든 상관없다.

반디치는 각 ATM에 들어 있는 현금 액수를 미리 알고 있다. 이동 중 같은 도로나 교차로를 여러 번 지날 수 있지만, ATM의 현금은 다시 채워지지 않으므로 이미 방문했던 교차로를 다시 지날 때에는 인출할 현금이 없다. 즉, 각 교차로의 현금은 처음 방문할 때 한 번만 인출된다.

예를 들어 아래 예제 입력의 도시에는 교차로가 6개 있다. 현금 인출을 1번 교차로에서 시작한다면, 반디치는 1→2→4→1→2→3→51 \to 2 \to 4 \to 1 \to 2 \to 3 \to 5의 경로로 이동하여 총 47의 현금을 인출할 수 있다(1번과 2번 교차로는 다시 지나가지만 현금은 한 번씩만 인출된다).

출발 교차로에서 어떤 레스토랑까지 이동하면서 인출할 수 있는 현금의 최대 액수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 교차로의 수 NN과 도로의 수 MM이 주어진다(N,M≤500000N, M \le 500000). 교차로는 11번부터 NN번까지 번호가 매겨져 있다.

다음 MM개의 줄에는 각 도로의 정보가 한 줄에 하나씩 주어지며, 각 줄에는 그 도로의 시작 교차로 번호와 끝 교차로 번호를 나타내는 두 정수가 있다. 도로는 시작 교차로에서 끝 교차로로 향하는 일방통행이다.

그다음 NN개의 줄에는 11번 교차로부터 차례대로 각 교차로의 ATM에 들어 있는 현금 액수가 한 줄에 하나씩 주어진다. 각 액수는 00 이상 40004000 이하의 정수이다.

그다음 줄에는 두 정수 SS와 PP가 주어진다. SS는 출발 교차로(현금 인출을 시작하는 교차로)의 번호이고, PP는 레스토랑의 수이다(1≤P≤N1 \le P \le N). 마지막 줄에는 레스토랑이 있는 교차로의 번호를 나타내는 PP개의 정수가 주어진다.

모든 입력에서, 출발 교차로로부터 일방통행 도로를 따라 도달할 수 있는 레스토랑이 항상 하나 이상 존재한다.

출력

출발 교차로에서 어떤 레스토랑까지 이동하면서 인출할 수 있는 현금의 최대 액수를 정수 하나로 출력한다.

예제3

  1. 예제 1

    입력
    6 7
    1 2
    2 3
    3 5
    2 4
    4 1
    2 6
    6 5
    10
    12
    8
    16
    1
    5
    1 4
    4 3 5 6
    
    예상 출력
    47
    
  2. 예제 2

    입력
    1 0
    100
    1 1
    1
    
    예상 출력
    100
    
  3. 예제 3

    입력
    3 2
    1 2
    2 3
    5
    10
    20
    1 1
    3
    
    예상 출력
    35