가장 짧은 순례

면접 대비

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

요약
가중치가 있는 무방향 그래프에서 1번 성지에서 N번 성지까지 정확히 여덟 개의 서로 다른 성지를 지나는 단순 경로의 최소 시간을 구한다.
난이도

보통10점 중 7점

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

문제

순례자는 영원히 끝나지 않을 것만 같은 순례를 계속하고 있다. 지상에는 총 NN 개의 성지가 있어 11에서 NN사이의 번호가 붙어있다. 또한 총 MM 개의 도로가 있어 ii번 도로는 x_ix\_i번 성지와 y_iy\_i번 성지 사이를 w_iw\_i분에 오갈 수 있게 해준다.

순례자는 11번 성지에서 출발해 NN번 성지에서 끝나는 새로운 순례를 계획 중이다. 이때 종교적인 의미를 담아 11번 성지와 NN번 성지를 포함해 정확히 여덟 개의 서로 다른 성지를 방문하려고 한다. 단, 순례 중 한 성지를 두 번 이상 방문해서는 안 된다.

도로 위에서 이동하는 시간만 고려할 때, 순례에 걸리는 가장 짧은 시간을 구하여라.

입력

첫 번째 줄에, 성지의 개수와 도로의 개수를 나타내는 자연수 NN과 MM이 주어진다.

다음 MM 개의 줄의 ii 번째 줄에, ii번 도로의 정보 x_i,y_i,w_ix\_i, y\_i, w\_i (1≤x_i,y_i≤N1 \leq x\_i,y\_i \leq N, x_i≠y_ix\_i \neq y\_i, 1≤w_i≤1081 \leq w\_i \leq 10^8)가 주어진다. 같은 두 성지 쌍을 연결하는 도로가 여러 번 주어지지 않는다.

출력

첫 번째 줄에, 순례에 걸리는 가장 짧은 시간을 분 단위로 출력한다. 단, 조건을 만족하는 순례가 존재하지 않을 경우 -1을 출력한다.

예제2

  1. 예제 1

    입력
    10 10
    1 2 2
    2 3 2
    3 4 2
    4 5 2
    5 6 2
    6 7 2
    7 10 2
    3 8 1
    8 9 5
    9 6 1
    
    예상 출력
    14
    
  2. 예제 2

    입력
    8 8
    1 2 1
    2 3 1
    3 4 1
    4 8 1
    1 5 1
    5 6 1
    6 7 1
    7 8 1
    
    예상 출력
    -1