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

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

가장 좋은 목초지

면접 대비

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

요약
가중 무방향 그래프와 좋아하는 정점 집합이 주어질 때, 모든 좋아하는 정점까지의 최단 거리 평균이 가장 작은 정점을 찾고, 동점이면 번호가 가장 작은 정점을 출력한다.
난이도

보통10점 중 5점

유형
그래프, 최단 경로, 힙, 완전 탐색
정답자
아직 제출이 없습니다

문제

베시(Bessie)는 언제나 자신의 생활을 최적화하고 싶어 하며, 존 아저씨(Farmer John)의 농장을 이루는 PP개의 목초지(1≤P≤5001 \le P \le 500, 편의상 11번부터 PP번까지 번호가 붙어 있습니다) 가운데 자신이 좋아하는 FF개의 목초지 F1,F2,…,FFF_1, F_2, \dots, F_F(1≤F≤P1 \le F \le P, 1≤Fi≤P1 \le F_i \le P)를 방문하는 것을 특히 즐긴다는 사실을 깨달았습니다.

농장에는 여러 목초지를 잇는 양방향 소길이 CC개(1≤C≤80001 \le C \le 8000, 편의상 11번부터 CC번까지 번호가 붙어 있습니다) 있으며, 이 길들을 이용하면 농장의 어떤 목초지로도 갈 수 있습니다. ii번째 소길은 두 끝점 aia_i와 bib_i(1≤ai≤P1 \le a_i \le P, 1≤bi≤P1 \le b_i \le P)를 연결하고, 어느 방향으로 지나가든 통과하는 데 TiT_i(1≤Ti≤8921 \le T_i \le 892)의 시간이 걸립니다.

베시는 잠에서 깨어났을 때 자신이 좋아하는 FF개의 목초지까지 이동하는 평균 시간이 최소가 되도록, 잠을 잘 가장 좋은 목초지의 번호를 찾고 싶어 합니다.

아래 지도는 예시 농장을 나타냅니다. 번호 옆에 별표 *가 붙은 목초지가 베시가 좋아하는 목초지이고, 대괄호 [] 안의 숫자는 그 소길을 지나는 데 걸리는 시간입니다.

            1*--[4]--2--[2]--3
                     |       |
                    [3]     [4]
                     |       |
                     4--[3]--5--[1]---6---[6]---7--[7]--8*
                     |       |        |         |
                    [3]     [2]      [1]       [3]
                     |       |        |         |
                    13*      9--[3]--10*--[1]--11*--[3]--12*

다음 표는 후보 목초지 4,5,6,7,9,10,11,124, 5, 6, 7, 9, 10, 11, 12가 각각 "가장 좋은 목초지"일 때, 좋아하는 목초지들까지의 거리와 그 평균을 보여 줍니다.

                       * * * * * * Favorites * * * * * *
 Potential      Pasture Pasture Pasture Pasture Pasture Pasture     Average
Best Pasture       1       8      10      11      12      13        Distance
------------      --      --      --      --      --      --      -----------
    4              7      16       5       6       9       3      46/6 = 7.67
    5             10      13       2       3       6       6      40/6 = 6.67
    6             11      12       1       2       5       7      38/6 = 6.33
    7             16       7       4       3       6      12      48/6 = 8.00
    9             12      14       3       4       7       8      48/6 = 8.00
   10             12      11       0       1       4       8      36/6 = 6.00 ** BEST
   11             13      10       1       0       3       9      36/6 = 6.00
   12             16      13       4       3       0      12      48/6 = 8.00

이 후보들이 실제로 가장 좋은 선택지라고 할 때(프로그램은 모든 목초지를 어떤 방식으로든 확인해야 합니다), 잠자기에 가장 좋은 곳은 평균 거리가 가장 작은 1010번 목초지입니다.

입력

  • 첫째 줄: 세 정수 PP, FF, CC가 공백으로 구분되어 주어집니다.
  • 다음 FF개의 줄: 각 줄에 베시가 좋아하는 목초지의 번호 FiF_i가 하나씩 주어집니다.
  • 그다음 CC개의 줄: 각 줄에 소길 하나를 나타내는 세 정수 aia_i, bib_i, TiT_i가 공백으로 구분되어 주어집니다.

출력

  • 잠자기에 가장 좋은 목초지의 번호를 한 줄에 정수 하나로 출력합니다. 가장 좋은 목초지가 여러 개라면 그중 번호가 가장 작은 것을 출력합니다.

예제3

  1. 예제 1

    입력
    13 6 15
    11
    13
    10
    12
    8
    1
    2 4 3
    7 11 3
    10 11 1
    4 13 3
    9 10 3
    2 3 2
    3 5 4
    5 9 2
    6 7 6
    5 6 1
    1 2 4
    4 5 3
    11 12 3
    6 10 1
    7 8 7
    
    예상 출력
    10
    
  2. 예제 2

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

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