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

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

두 단계 최단 경로 4

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

요약
가중 무방향 그래프에서 X에서 Z로 가는 경로 중 주어진 P개의 중간 정점을 모두 지나는 최단 거리를 구한다. P는 최대 20이다.
난이도

보통10점 중 7점

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

문제

서준이는 아빠에게 생일선물로 세계 지도를 받아서 매우 기뻤다. 세계 지도에서 최단 경로를 찾는 프로그램을 만들어 아빠에게 고마운 마음을 전하려고 한다. 세계 지도는 도시를 정점으로, 도시 사이의 도로를 간선으로 갖는 무방향 그래프이며, 도로의 길이가 간선의 가중치이다. 출발 정점 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가 주어진다. (3≤P≤min⁡(20,N−3)3 \le P \le \min(20, N - 3))

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

출력

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

예제1

  1. 예제 1

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