브론즈 소 파티

면접 대비

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

요약
연결된 가중 무방향 그래프에서 고정된 목장 X로부터 가장 먼 최단 거리의 두 배를 구한다. 이는 소가 왕복하는 가장 긴 시간이다.
난이도

보통10점 중 4점

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

문제

NN개의 농장이 있고, 농장에는 11번부터 NN번까지 번호가 매겨져 있다(1≤N≤10001 \le N \le 1000). 각 농장에서 소 한 마리씩이 농장 XX번(1≤X≤N1 \le X \le N)에서 열리는 큰 소 파티에 참석한다. 농장들은 MM개의 양방향 도로로 연결되어 있으며(1≤M≤100,0001 \le M \le 100{,}000), 어떤 두 농장 사이도 도로를 따라 항상 오갈 수 있다. ii번 도로를 지나는 데는 TiT_i(1≤Ti≤1001 \le T_i \le 100)만큼의 시간이 든다. 두 농장이 두 개 이상의 도로로 직접 연결되어 있을 수도 있다.

모든 소가 농장 XX번에 모인 뒤, 저마다 파티 선물을 자기 농장에 두고 왔다는 것을 깨달았다. 소들은 파티를 잠시 중단하고 각자 자기 농장으로 돌아가 선물을 챙긴 뒤 다시 농장 XX번으로 돌아오기로 했다. 모든 소는 자기 농장까지 갔다가 돌아오는 가장 빠른 경로로 이동한다. 파티는 마지막 소가 돌아올 때까지 중단되므로, 중단 시간은 모든 소의 왕복 시간 중 가장 큰 값과 같다. 이 최소 중단 시간은 얼마인가?

입력

첫째 줄에 세 정수 NN, MM, XX가 공백으로 구분되어 주어진다.

다음 MM개의 줄 중 ii번째 줄에는 ii번 도로를 나타내는 세 정수 AiA_i, BiB_i, TiT_i가 공백으로 구분되어 주어진다. 이 도로는 농장 AiA_i번과 농장 BiB_i번을 연결하며, 지나는 데 TiT_i만큼의 시간이 든다.

출력

파티를 중단해야 하는 최소 시간을 정수 하나로 출력한다.

힌트

도로가 양방향이므로, 한 소가 농장 XX번까지 갔다 오는 왕복 시간은 그 소의 농장과 농장 XX번 사이 최단 거리의 정확히 두 배이다. 따라서 농장 XX번에서 모든 농장까지의 최단 거리를 한 번의 최단 경로 탐색으로 구한 뒤, 그중 가장 큰 값을 두 배 하면 된다.

예제3

  1. 예제 1

    입력
    4 8 2
    1 2 7
    1 3 8
    1 4 4
    2 1 3
    2 3 1
    3 1 2
    3 4 6
    4 2 2
    
    예상 출력
    6
    
  2. 예제 2

    입력
    2 1 1
    1 2 5
    
    예상 출력
    10
    
  3. 예제 3

    입력
    5 4 1
    1 2 2
    2 3 2
    3 4 2
    4 5 2
    
    예상 출력
    16