물건 배달

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

보통7그래프최단 경로동적 계획법최소 신장 트리아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

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

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

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

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

입력

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

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

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

이어지는 MM개의 줄에 각각 정수 UU, VV, WW가 주어진다 (0U,VN10 \le U, V \le N-1, UVU \ne V, 1W1091 \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)을 달린다.