The Hungary Games
시간 제한2초메모리 제한512 MB
가중치가 있는 방향 그래프에서 1번 노드에서 N번 노드로 가는 모든 경로 중 서로 다른 총 길이 가운데 두 번째로 작은 값을 구하고, 그러한 값이 없으면 -1을 출력한다.
문제
헝가리 게임에 오신 것을 환영합니다! 부다페스트의 거리는 복잡하게 얽힌 일방통행 도로망을 이룹니다. 당신은 리얼리티 TV 쇼의 일부로 이 거리를 질주하는 경주에 강제로 참가하게 되었습니다. 출발점은 세체니 온천(줄여서 ), 도착점은 귈 바바의 무덤(줄여서 )입니다.
당연히 당신은 최대한 빨리 완주하고 싶습니다. 기록이 좋을수록 더 많은 광고 계약을 따낼 수 있기 때문입니다. 하지만 함정이 있습니다. 에서 까지 최단 경로를 택할 만큼 영리한 사람은 팔뵐지 동굴계에 던져져 국보로 보관됩니다. 당신은 이 운명을 피하면서도 가능한 한 빠르고자 하므로, 엄밀하게 두 번째로 짧은 - 경로를 택해야 합니다.
에서 까지 엄밀하게 두 번째로 짧은 경로의 길이를 계산하는 프로그램을 작성하세요. 이런 경로는 때때로 같은 노드를 두 번 이상 방문하기도 합니다. 가령 같은 간선을 왕복하는 경우가 그렇습니다.
입력
첫째 줄에 두 정수 과 이 주어집니다. 은 부다페스트의 노드 수, 은 간선 수입니다. 노드는 으로 번호가 매겨지며, 노드 이 , 노드 이 입니다.
이어지는 개의 줄에는 각각 세 정수 이 주어지며, 이는 에서 로 향하는 길이 의 일방통행 도로를 나타냅니다. 모든 줄에서 이고, 순서쌍 는 서로 다릅니다.
출력
에서 까지 엄밀하게 두 번째로 짧은 경로의 길이, 즉 에서 까지 모든 경로의 총길이 중 서로 다른 값들 가운데 두 번째로 작은 값을 출력합니다. 에서 까지 서로 다른 경로 길이가 두 가지 미만이면 을 출력합니다.
제한
모든 길이 은 인 양의 정수입니다. 전체 테스트 케이스의 50%에서는 , 입니다. 모든 테스트 케이스에서 , 입니다.