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

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

Roadblocks

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

요약
가중치가 양수인 무방향 그래프에서 1번 정점에서 N번 정점까지의 두 번째로 짧은 경로의 길이를 구한다. 경로는 간선을 다시 지나도 된다.
난이도

보통10점 중 6점

유형
그래프, 최단 경로, 힙, 그리디
정답자
아직 제출이 없습니다

문제

베시(Bessie)는 작은 농장으로 이사한 뒤, 가끔 가장 친한 친구를 만나러 옛집으로 걸어갑니다. 도중의 풍경을 즐기고 싶어서 너무 빨리 도착하고 싶지는 않기 때문에, 최단 경로 대신 두 번째로 짧은 경로로 가기로 했습니다. 이러한 경로는 항상 존재한다고 가정합니다.

시골에는 11번부터 NN번까지 번호가 매겨진 NN개의 교차로가 있고, 이들을 잇는 RR개의 양방향 도로가 있습니다. 각 도로는 두 교차로를 연결하며 양의 길이를 가집니다. 베시는 11번 교차로에서 출발하고, 친구는 NN번 교차로에 삽니다.

여기서 경로란 11번에서 NN번으로 가는 임의의 워크(walk)를 말하며, 같은 도로나 교차로를 여러 번 지나도 되고 이미 지난 도로를 되돌아가도 됩니다. 경로의 길이는 지나는 도로들의 길이의 합입니다. 두 번째로 짧은 경로란 그 길이가 최단 경로의 길이보다 엄밀히 크면서, 그러한 모든 경로들 중에서 가장 짧은 경로를 뜻합니다. 즉 최단 경로의 길이를 LL이라 하면, 답은 LL보다 엄밀히 큰 값들 중 실제로 만들 수 있는 가장 작은 길이입니다. (길이가 LL로 같은 서로 다른 경로가 여러 개 있어도 모두 최단 경로로 취급하며, 두 번째로 짧은 길이는 그다음으로 큰 값입니다.)

제약: 1≤N≤50001 \le N \le 5000, 1≤R≤100,0001 \le R \le 100{,}000입니다.

입력

  • 첫째 줄: 두 정수 NN과 RR이 공백으로 구분되어 주어집니다.
  • 둘째 줄부터 R+1R+1번째 줄까지: 각 줄에는 세 정수 AA, BB, DD가 공백으로 구분되어 주어지며, 이는 교차로 AA와 BB를 잇는 길이 DD의 양방향 도로를 나타냅니다 (1≤D≤50001 \le D \le 5000).

출력

  • 교차로 11번에서 NN번까지의 두 번째로 짧은 경로의 길이를 한 줄에 출력합니다.

힌트

샘플 그래프에서 최단 경로는 1→2→41 \to 2 \to 4로 길이가 100+200=300100 + 200 = 300이고, 그다음으로 긴 경로는 1→2→3→41 \to 2 \to 3 \to 4로 길이가 100+250+100=450100 + 250 + 100 = 450입니다. 따라서 두 번째로 짧은 경로의 길이는 450450입니다.

예제1

  1. 예제 1

    입력
    4 4
    1 2 100
    2 4 200
    2 3 250
    3 4 100
    
    예상 출력
    450