물건 배달
시간 제한5초메모리 제한512 MB
가중치가 있는 방향 그래프와 고객 정점들이 주어질 때, 각 고객을 최단 시간에 방문하도록 트럭 경로를 배정하는 최소 대수를 구한다.
문제
당신은 배송 회사를 운영한다. 고객에게 물건을 배달하려고 트럭을 투입해야 하는데, 물건과 트럭은 하루가 시작될 때 모두 창고에 있다.
도로망은 교차로를 잇는 일방통행 도로로 이루어진다. 창고와 고객은 모두 교차로에 있고, 각 도로를 지나는 주행 시간은 미리 알려져 있다.
이 회사는 초고속 배송을 보장한다. 트럭은 하루가 시작되자마자 출발하고, 고객 는 시각 에 물건을 받는다. 여기서 는 창고에서 고객 가 있는 교차로까지 트럭이 이동하는 데 걸리는 최소 시간이다.
이 보장을 지키려면 트럭을 최소 몇 대 투입해야 하는가? 다시 말해 트럭마다 주행 경로를 하나씩 정해서 모든 고객 를 시각 에 어떤 트럭이 방문하도록 만들 수 있는 최소 트럭 수를 구하라. 하루를 시작할 때 트럭에 물건을 싣는 시간과 고객에게 도착해 물건을 내려놓는 시간은 0으로 본다. 물건은 충분히 작아서 트럭 한 대가 필요한 만큼 많은 고객의 물건을 한꺼번에 실을 수 있다.
입력
입력은 테스트 케이스 하나로 이루어진다.
첫째 줄에 세 정수 , , 가 주어진다. 은 도로망의 교차로 수 (), 은 도로의 수 (), 는 고객의 수 (, )이다.
교차로에는 번부터 번까지 번호가 붙어 있고, 창고는 항상 번 교차로에 있다. 둘째 줄에 고객이 있는 교차로 번호를 뜻하는 서로 다른 정수 개가 주어진다. 각 번호는 이상 이하이다.
이어지는 개의 줄에 각각 정수 , , 가 주어진다 (, , ). 에서 로 가는 일방통행 도로가 있고 주행 시간이 라는 뜻이다.
어떤 교차로 에서 다른 교차로 로 가는 도로는 많아야 하나다. 다만 에서 로 가는 도로와 에서 로 가는 도로가 둘 다 있을 수는 있다. 창고에서 모든 고객에게 갈 수 있음은 항상 보장된다.
출력
모든 고객 가 시각 에 어떤 트럭의 방문을 받도록 하는 데 필요한 트럭의 최소 개수를 정수 하나로 출력한다.
힌트
첫 번째 예제에서는 한 트럭이 경로를, 다른 트럭이 경로를 달리면 된다. 두 번째 예제의 답은 , , 세 경로를 쓰는 방법뿐이다. 세 번째 예제에서는 한 트럭이 , 다른 트럭이 , 마지막 트럭이 을 달린다.