아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

두 단계 최단 경로 2

면접 대비

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

요약
가중치가 있는 무방향 그래프에서 주어진 P개의 중간 정점 중 적어도 하나를 지나 X에서 Z로 가는 최단 거리를 구한다.
난이도

보통10점 중 6점

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

문제

서준이는 아빠에게 생일 선물로 세계 지도를 받아서 매우 기뻤다. 세계 지도에서 최단 경로를 찾는 프로그램을 만들어 아빠에게 고마운 마음을 전하려고 한다. 세계 지도는 도시를 정점으로, 도시 사이의 도로를 간선으로 갖는 무방향 그래프이고, 도로의 길이가 간선의 가중치이다. 출발 정점 XX에서 출발해 PP개의 중간 정점 가운데 적어도 한 개를 반드시 거친 뒤 도착 정점 ZZ에 도달하는 최단 거리를 구하자.

입력

첫째 줄에 정점의 수 NN (10≤N≤100,00010 \le N \le 100{,}000)과 간선의 수 MM (10≤M≤300,00010 \le M \le 300{,}000)이 주어진다.

다음 MM개 줄에 간선 정보 u v w가 주어지며, 도시 uu와 도시 vv 사이에 가중치가 정수 ww인 양방향 도로가 있음을 나타낸다. (1≤u,v≤N1 \le u, v \le N, u≠vu \ne v, 1≤w≤1,000,0001 \le w \le 1{,}000{,}000)

다음 줄에 X Z가 주어진다. (1≤X,Z≤N1 \le X, Z \le N, X≠ZX \ne Z)

다음 줄에 PP가 주어진다. (1≤P≤N−31 \le P \le N - 3)

다음 줄에 PP개의 서로 다른 중간 정점 YY (1≤Y≤N1 \le Y \le N, X≠Y≠ZX \ne Y \ne Z)가 빈칸을 사이에 두고 주어진다.

출력

출발 정점 XX에서 출발해 PP개의 중간 정점 가운데 적어도 한 개를 반드시 거친 뒤 도착 정점 ZZ에 도달하는 최단 거리를 출력한다. 도착 정점 ZZ에 도달할 수 없으면 -1을 출력한다.

예제2

  1. 예제 1

    입력
    13 19
    1 2 100
    1 3 100
    1 4 1
    2 5 1
    3 6 1
    3 4 1
    4 6 1
    4 7 1
    5 6 10
    5 8 10
    6 9 10
    7 10 1
    8 9 10
    8 11 1
    9 11 1
    9 12 1
    10 12 2
    11 13 1
    12 13 3
    1 13
    3
    8 9 10
    
    예상 출력
    8
    
  2. 예제 2

    입력
    13 19
    1 2 1
    1 3 2
    1 4 10
    2 5 1
    3 6 10
    3 4 10
    4 6 1
    4 7 1
    5 6 10
    5 8 1
    6 9 1
    7 10 1
    8 9 1
    8 11 100
    9 11 100
    9 12 100
    10 12 1
    11 13 100
    12 13 1
    1 13
    3
    8 9 10
    
    예상 출력
    10