만드는 중입니다

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

카드캡터 한별

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

요약
방향 그래프의 1번 정점에서 출발해 카드가 놓인 N개의 정점을 모두 방문하는 최단 이동 거리를 구합니다. 보유한 카드 수 이하의 권력을 가진 정점만 들어갈 수 있습니다.
난이도

보통10점 중 6점

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

문제

어느 날, 평범한 일상을 보내던 한별이는 마법소녀가 되었습니다. 마법소녀가 된 한별이는 더욱 강해져서 악의 세력 "보기(bogy)"의 간부들을 토벌하기로 결심했습니다. 하지만 한별이는 마법에 능숙하지 못해서, 먼저 마력만 있으면 마법을 쓸 수 있게 해 주는 "스타더스트 카드" NN장을 전부 수집하기로 했습니다.

한별이가 사는 지역은 정점이 VV개, 간선이 EE개인 방향 그래프로 나타낼 수 있습니다. 정점에는 1번부터 VV번까지 번호가 붙어 있고, 간선마다 길이가 정해져 있습니다. 한별이는 1번 정점에서 출발하며, "스타더스트 카드"는 NN개의 목표 정점에 하나씩 놓여 있습니다. 한별이가 목표 정점을 처음 방문하면 카드를 한 장 얻습니다. 한별이가 카드를 모은다는 사실을 안 "보기"는 모든 정점에 간부를 한 명씩 배치했습니다. 한별이는 "보기"의 방해를 받지 않으려면, 가진 카드 개수 이하의 힘을 가진 간부가 있는 정점으로만 다녀야 합니다. 한별이가 카드를 LL장 가진 상태에서 어떤 정점으로 이동하려면, 그 정점에 카드가 있는지와 관계없이 간부의 힘이 LL 이하여야 합니다.

한별이가 "스타더스트 카드"를 빠르게 모을 수 있도록, 한별이의 이동 경로 중 최소 이동 거리를 구해 주세요. 단, 한별이는 "스타더스트 카드" NN장을 모두 모으면 즉시 이동을 끝냅니다.

입력

첫 번째 줄에 NN, VV, EE가 주어집니다. (1≤N≤min⁡(14,V−1)1\leq N\leq\min(14,V-1), 1≤V≤10001\leq V\leq 1000, 1≤E≤min⁡(5000,V(V−1))1\leq E\leq \min(5000,V(V-1)))

두 번째 줄에 VV개의 정수 l1,l2,⋯ ,lVl_1, l_2, \cdots, l_V가 주어집니다. lil_i는 ii번 정점에 위치한 "보기" 간부의 힘을 뜻합니다. (l1=0l_1=0, 2≤i≤V2\leq i\leq V에 대해 0≤li≤N−10\leq l_i\leq N-1)

세 번째 줄에 목표 정점의 번호를 나타내는 서로 다른 정수 NN개 k1,k2,⋯ ,kNk_1, k_2, \cdots, k_N가 오름차순으로 주어집니다. (2≤ki≤V2\leq k_i\leq V)

네 번째 줄부터 EE개의 줄에 각 간선의 시작점과 끝점의 번호 s,es, e와 간선의 길이 dd가 주어집니다. (1≤s,e≤V1\leq s, e\leq V, s≠es\neq e, 1≤d≤1091\leq d\leq 10^9)

단, 양 끝점이 같은 간선은 둘 이상 입력되지 않습니다.

출력

한별이가 모든 카드를 모을 수 있는 경로 중 최소 이동 거리를 출력합니다. 한별이가 모든 카드를 모을 수 없다면 −1-1을 출력합니다.

예제3

  1. 예제 1

    입력
    2 6 6
    0 0 0 0 0 1
    2 6
    1 2 1
    2 3 10
    3 4 100
    4 5 1000
    2 5 10000
    5 6 100000
    
    예상 출력
    101111
    
  2. 예제 2

    입력
    3 6 6
    0 0 2 1 1 2
    2 5 6
    1 2 1
    2 3 10
    3 5 100
    2 4 1000
    4 5 10000
    5 6 100000
    
    예상 출력
    111001
    
  3. 예제 3

    입력
    2 4 3
    0 1 0 0
    2 4
    1 2 1
    2 3 10
    3 4 100
    
    예상 출력
    -1