만드는 중입니다

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

물건 배달

시간 제한5초메모리 제한512 MB

요약
가중치가 있는 방향 그래프와 고객 정점들이 주어질 때, 각 고객을 최단 시간에 방문하도록 트럭 경로를 배정하는 최소 대수를 구한다.
난이도

보통10점 중 7점

유형
그래프, 최단 경로, 동적 계획법, 최소 신장 트리
정답자
아직 제출이 없습니다

문제

당신은 배송 회사를 운영한다. 고객에게 물건을 배달하려고 트럭을 투입해야 하는데, 물건과 트럭은 하루가 시작될 때 모두 창고에 있다.

도로망은 교차로를 잇는 일방통행 도로로 이루어진다. 창고와 고객은 모두 교차로에 있고, 각 도로를 지나는 주행 시간은 미리 알려져 있다.

이 회사는 초고속 배송을 보장한다. 트럭은 하루가 시작되자마자 출발하고, 고객 ii는 시각 TiT_i에 물건을 받는다. 여기서 TiT_i는 창고에서 고객 ii가 있는 교차로까지 트럭이 이동하는 데 걸리는 최소 시간이다.

이 보장을 지키려면 트럭을 최소 몇 대 투입해야 하는가? 다시 말해 트럭마다 주행 경로를 하나씩 정해서 모든 고객 ii를 시각 TiT_i에 어떤 트럭이 방문하도록 만들 수 있는 최소 트럭 수를 구하라. 하루를 시작할 때 트럭에 물건을 싣는 시간과 고객에게 도착해 물건을 내려놓는 시간은 0으로 본다. 물건은 충분히 작아서 트럭 한 대가 필요한 만큼 많은 고객의 물건을 한꺼번에 실을 수 있다.

입력

입력은 테스트 케이스 하나로 이루어진다.

첫째 줄에 세 정수 NN, MM, CC가 주어진다. NN은 도로망의 교차로 수 (2≤N≤1032 \le N \le 10^3), MM은 도로의 수 (1≤M≤1051 \le M \le 10^5), CC는 고객의 수 (1≤C≤3001 \le C \le 300, C<NC < N)이다.

교차로에는 00번부터 N−1N-1번까지 번호가 붙어 있고, 창고는 항상 00번 교차로에 있다. 둘째 줄에 고객이 있는 교차로 번호를 뜻하는 서로 다른 정수 CC개가 주어진다. 각 번호는 11 이상 N−1N-1 이하이다.

이어지는 MM개의 줄에 각각 정수 UU, VV, WW가 주어진다 (0≤U,V≤N−10 \le U, V \le N-1, U≠VU \ne V, 1≤W≤1091 \le W \le 10^9). UU에서 VV로 가는 일방통행 도로가 있고 주행 시간이 WW라는 뜻이다.

어떤 교차로 UU에서 다른 교차로 VV로 가는 도로는 많아야 하나다. 다만 UU에서 VV로 가는 도로와 VV에서 UU로 가는 도로가 둘 다 있을 수는 있다. 창고에서 모든 고객에게 갈 수 있음은 항상 보장된다.

출력

모든 고객 ii가 시각 TiT_i에 어떤 트럭의 방문을 받도록 하는 데 필요한 트럭의 최소 개수를 정수 하나로 출력한다.

힌트

첫 번째 예제에서는 한 트럭이 (0,1,2)(0, 1, 2) 경로를, 다른 트럭이 (0,3)(0, 3) 경로를 달리면 된다. 두 번째 예제의 답은 (0,1)(0, 1), (0,2)(0, 2), (0,3)(0, 3) 세 경로를 쓰는 방법뿐이다. 세 번째 예제에서는 한 트럭이 (0,1)(0, 1), 다른 트럭이 (0,4,6)(0, 4, 6), 마지막 트럭이 (0,2,3,5,7)(0, 2, 3, 5, 7)을 달린다.

예제3

  1. 예제 1

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

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

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