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

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

쇼핑몰

면접 대비

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

요약
쇼핑몰이 있는 도시들이 주어진 연결 가중 그래프에서 도로 위 모든 점 중 가장 가까운 쇼핑몰까지의 거리가 최대가 되는 값을 구해 반올림해 출력한다.
난이도

보통10점 중 6점

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

문제

어떤 나라에 도시가 NN개 있고, 도시들은 MM개의 양방향 도로로 연결되어 있다. 이 가운데 KK개의 도시에는 쇼핑몰이 있으며, 국민들은 도로를 따라 쇼핑몰이 있는 도시로 이동하여 쇼핑을 한다.

집은 도시 안에 있을 수도 있고, 도로 위의 임의의 지점에 있을 수도 있다. 어떤 집에서 쇼핑몰까지의 거리는 그 집에서 가장 가까운 쇼핑몰까지의 최단 거리로 정의한다. 사람들은 언제나 최단 경로로 이동하며, 도시 내부를 이동하는 데 걸리는 시간은 00이다.

도로 정보와 쇼핑몰이 있는 도시가 주어졌을 때, 쇼핑몰에서 가장 멀리 떨어진 집까지의 거리, 즉 가능한 모든 집의 위치에 대해 '가장 가까운 쇼핑몰까지의 최단 거리'가 최대가 되는 값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 도시의 수 NN, 도로의 수 MM, 쇼핑몰이 있는 도시의 수 KK가 주어진다. 도시는 11번부터 NN번까지 번호가 매겨져 있다. (2≤N≤30002 \le N \le 3000, 1≤M≤1051 \le M \le 10^5, 1≤K≤N1 \le K \le N)

다음 MM개 줄에는 각 도로의 정보 aa, bb, ll이 주어진다. 이는 도시 aa와 도시 bb를 잇는 길이 ll(1≤l≤10001 \le l \le 1000)의 도로가 있음을 의미한다. aa와 bb는 서로 다르며, 두 도시를 잇는 도로는 많아야 하나이다. 모든 도시는 도로를 통해 서로 이동할 수 있다(그래프는 연결되어 있다).

다음 KK개 줄에는 쇼핑몰이 있는 도시의 번호가 한 줄에 하나씩 주어지며, 이 번호들은 서로 다르다.

출력

쇼핑몰에서 가장 멀리 떨어진 집까지의 거리를, 소수점 첫째 자리에서 반올림하여 정수로 출력한다.

힌트

어떤 집이 도시 aa와 도시 bb를 잇는 길이 ll의 도로 위에 있고, 도시 aa로부터 거리 xx(0≤x≤l0 \le x \le l)만큼 떨어져 있다고 하자. 그러면 이 집에서 가장 가까운 쇼핑몰까지의 거리는 min⁡(da+x,  db+(l−x))\min(d_a + x,\; d_b + (l - x))이다. 여기서 dvd_v는 도시 vv에서 가장 가까운 쇼핑몰까지의 최단 거리이다. 이 값이 최대가 되는 지점에서의 거리는 da+db+l2\dfrac{d_a + d_b + l}{2}이다.

첫 번째 예제에서는 모든 도로의 길이가 11이고 쇼핑몰은 11번 도시에만 있다. 쇼핑몰에서 가장 멀리 떨어진 집은 22번 도시와 33번 도시를 잇는 도로 위, 22번 도시로부터 거리 0.50.5만큼 떨어진 지점에 있으며, 이 집과 쇼핑몰 사이의 거리는 1.51.5이다. 따라서 반올림하면 22가 된다.

예제2

  1. 예제 1

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

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