만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

대피소

시간 제한4초메모리 제한1024 MB

요약
각 대피소의 수용 인원을 넘지 않으면서 모든 주민이 대피소에 도착하는 최소 시간을 구합니다.
난이도

보통10점 중 7점

유형
이분 탐색, 최단 경로, 비트 연산
정답자
아직 제출이 없습니다

문제

어두운 방에서 밀란이 세 다리 탁자에 앉아 약 23시 55분에 핵재난이 도시에 미칠 수 있는 결과를 생각하고 있다. 밀란은 시장이므로 관련 사실을 잘 알고 있다.

도시에는 정확히 NN명의 주민이 살고, 각 주민은 자기 집에 산다. 정확히 MM쌍의 집 사이에는 도로가 있고, 각 도로를 지나는 데 걸리는 시간이 주어진다. 정확히 KK개의 집에는 원자 대피소가 있으며, 각 대피소에 들어갈 수 있는 인원이 주어진다. 밀란은 "이 도시의 모든 주민을 대피시키는 데 필요한 최소 시간은 얼마인가?"라는 질문에 골몰하고 있다.

대피는 모든 주민이 어떤 원자 대피소에든 들어가는 것을 뜻한다. 주민은 최적으로(최단 경로로) 이동하며, 한 도로 위에서는 서로 다른 방향으로 여러 사람이 동시에 움직일 수 있다고 가정한다. 또한 임의의 두 집 사이에는 주어진 도로의 일부를 이용하는 경로가 적어도 하나 있다고 가정한다.

입력

첫 줄에 자연수 NN(1≤N≤1000001 \le N \le 100000), MM(1≤M≤3000001 \le M \le 300000), KK(1≤K≤171 \le K \le 17)가 주어진다. 각각 주민 수, 도로 수, 대피소 수이다. 집은 1번부터 NN번까지 번호가 매겨져 있다.

이어지는 MM개 줄에는 자연수 AA, BB(1≤A,B≤N1 \le A, B \le N, A≠BA \ne B)와 CC(1≤C≤1091 \le C \le 10^9)가 주어진다. 이는 AA번 집과 BB번 집 사이에 도로가 있고, 이를 지나는 데 CC의 시간이 걸린다는 뜻이다.

이어지는 KK개 줄에는 자연수 XX(1≤X≤N1 \le X \le N)와 YY(1≤Y≤1091 \le Y \le 10^9)가 주어진다. 이는 XX번 집에 원자 대피소가 있고, 최대 YY명까지 수용할 수 있다는 뜻이다. 모든 대피소의 수용 인원 합은 NN 이상이다.

출력

모든 주민을 대피시키는 데 필요한 최소 시간을 한 줄에 출력한다.

힌트

첫 번째 예제에서 3단위 시간이면 1, 2, 3번 집의 사람들은 1번 집의 대피소로 갈 수 있고, 4번과 5번 집의 사람들은 4번 집의 대피소로 갈 수 있다. 4번 집의 대피소는 최대 2명만 받으므로 그보다 짧은 시간에는 모든 사람이 대피소에 도착할 수 없다.

예제2

  1. 예제 1

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

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