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

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

The Hungary Games

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

요약
가중치가 있는 방향 그래프에서 1번 노드에서 N번 노드로 가는 모든 경로 중 서로 다른 총 길이 가운데 두 번째로 작은 값을 구하고, 그러한 값이 없으면 -1을 출력한다.
난이도

보통10점 중 6점

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

문제

헝가리 게임에 오신 것을 환영합니다! 부다페스트의 거리는 복잡하게 얽힌 일방통행 도로망을 이룹니다. 당신은 리얼리티 TV 쇼의 일부로 이 거리를 질주하는 경주에 강제로 참가하게 되었습니다. 출발점은 세체니 온천(줄여서 ss), 도착점은 귈 바바의 무덤(줄여서 tt)입니다.

당연히 당신은 최대한 빨리 완주하고 싶습니다. 기록이 좋을수록 더 많은 광고 계약을 따낼 수 있기 때문입니다. 하지만 함정이 있습니다. ss에서 tt까지 최단 경로를 택할 만큼 영리한 사람은 팔뵐지 동굴계에 던져져 국보로 보관됩니다. 당신은 이 운명을 피하면서도 가능한 한 빠르고자 하므로, 엄밀하게 두 번째로 짧은 ss-tt 경로를 택해야 합니다.

ss에서 tt까지 엄밀하게 두 번째로 짧은 경로의 길이를 계산하는 프로그램을 작성하세요. 이런 경로는 때때로 같은 노드를 두 번 이상 방문하기도 합니다. 가령 같은 간선을 왕복하는 경우가 그렇습니다.

입력

첫째 줄에 두 정수 NN과 MM이 주어집니다. NN은 부다페스트의 노드 수, MM은 간선 수입니다. 노드는 1,2,…,N1, 2, \ldots, N으로 번호가 매겨지며, 노드 11이 ss, 노드 NN이 tt입니다.

이어지는 MM개의 줄에는 각각 세 정수 A B LA\ B\ L이 주어지며, 이는 AA에서 BB로 향하는 길이 LL의 일방통행 도로를 나타냅니다. 모든 줄에서 A≠BA \ne B이고, 순서쌍 (A,B)(A, B)는 서로 다릅니다.

출력

ss에서 tt까지 엄밀하게 두 번째로 짧은 경로의 길이, 즉 ss에서 tt까지 모든 경로의 총길이 중 서로 다른 값들 가운데 두 번째로 작은 값을 출력합니다. ss에서 tt까지 서로 다른 경로 길이가 두 가지 미만이면 −1-1을 출력합니다.

제한

모든 길이 LL은 1≤L≤100001 \le L \le 10000인 양의 정수입니다. 전체 테스트 케이스의 50%에서는 2≤N≤402 \le N \le 40, 0≤M≤10000 \le M \le 1000입니다. 모든 테스트 케이스에서 2≤N≤200002 \le N \le 20000, 0≤M≤1000000 \le M \le 100000입니다.

예제2

  1. 예제 1

    입력
    4 6
    1 2 5
    1 3 5
    2 3 1
    2 4 5
    3 4 5
    1 4 13
    
    예상 출력
    11
    
  2. 예제 2

    입력
    2 2
    1 2 1
    2 1 1
    
    예상 출력
    3