휴가 계획
시간 제한3초메모리 제한256 MB
모든 간선이 K개 허브 중 하나에 닿는 항공망에서 Q개 여행 요청 중 도달 가능한 수와 최소 비용 합계를 구합니다.
문제
에어 보비니아는 소가 사는 농장 개를 잇는 항공편을 운항한다 (). 이 가운데 개 농장이 허브로 지정되어 있다 (, ).
지금 운항하는 편도 항공편은 개다 (). 번 항공편은 농장 에서 농장 로 가고 요금은 달러다 (). 모든 항공편은 와 중 적어도 하나가 허브다. 두 농장을 같은 방향으로 직접 잇는 항공편은 많아야 하나이고, 출발 농장과 도착 농장이 같은 항공편은 없다.
베시는 에어 보비니아의 발권 업무를 맡고 있다. 베시가 몇 시간 동안 맛있는 건초를 씹으러 자리를 비운 사이에 소들의 휴가를 위한 편도 여행 요청이 개 들어왔다 (). 번 요청은 농장 에서 농장 로 가는 표를 사려는 것이다.
요청마다 표를 끊어 줄 수 있는지 판단하고, 끊어 줄 수 있다면 최소 비용을 구하자.
출력을 줄이기 위해 처리할 수 있는 요청이 몇 개인지와, 그 요청을 모두 처리할 때의 최소 비용 합만 출력한다. 이 합은 32비트 정수 범위를 넘을 수 있다.
입력
- 첫째 줄에 , , , 가 주어진다.
- 다음 개 줄에 , , 가 주어진다. (, )
- 다음 개 줄에 허브인 농장 번호가 한 줄에 하나씩 주어진다. (번호는 이상 이하)
- 다음 개 줄에 요청이 한 줄에 하나씩, 출발 농장 와 도착 농장 두 수로 주어진다. (, )
출력
- 첫째 줄에 처리할 수 있는 요청의 개수를 출력한다.
- 둘째 줄에 그 요청을 모두 처리할 때의 최소 비용 합을 출력한다.
힌트
예제의 첫 번째 요청은 농장 1 → 2 → 3 경로로만 갈 수 있고 비용은 20이다. 농장 3에서 출발하는 항공편이 없어서 두 번째 요청은 처리할 수 없다.