휴가 계획

아직 제출이 없습니다시간 제한3초메모리 제한256 MB

문제

에어 보비니아는 소가 사는 농장 NN개를 잇는 항공편을 운항한다 (1N200001 \le N \le 20000). 이 가운데 KK개 농장이 허브로 지정되어 있다 (1K2001 \le K \le 200, KNK \le N).

지금 운항하는 편도 항공편은 MM개다 (1M200001 \le M \le 20000). ii번 항공편은 농장 uiu_i에서 농장 viv_i로 가고 요금은 did_i달러다 (1di100001 \le d_i \le 10000). 모든 항공편은 uiu_iviv_i 중 적어도 하나가 허브다. 두 농장을 같은 방향으로 직접 잇는 항공편은 많아야 하나이고, 출발 농장과 도착 농장이 같은 항공편은 없다.

베시는 에어 보비니아의 발권 업무를 맡고 있다. 베시가 몇 시간 동안 맛있는 건초를 씹으러 자리를 비운 사이에 소들의 휴가를 위한 편도 여행 요청이 QQ개 들어왔다 (1Q500001 \le Q \le 50000). ii번 요청은 농장 aia_i에서 농장 bib_i로 가는 표를 사려는 것이다.

요청마다 표를 끊어 줄 수 있는지 판단하고, 끊어 줄 수 있다면 최소 비용을 구하자.

출력을 줄이기 위해 처리할 수 있는 요청이 몇 개인지와, 그 요청을 모두 처리할 때의 최소 비용 합만 출력한다. 이 합은 32비트 정수 범위를 넘을 수 있다.

입력

  • 첫째 줄에 NN, MM, KK, QQ가 주어진다.
  • 다음 MM개 줄에 uiu_i, viv_i, did_i가 주어진다. (1ui,viN1 \le u_i, v_i \le N, uiviu_i \ne v_i)
  • 다음 KK개 줄에 허브인 농장 번호가 한 줄에 하나씩 주어진다. (번호는 11 이상 NN 이하)
  • 다음 QQ개 줄에 요청이 한 줄에 하나씩, 출발 농장 aia_i와 도착 농장 bib_i 두 수로 주어진다. (1ai,biN1 \le a_i, b_i \le N, aibia_i \ne b_i)

출력

  • 첫째 줄에 처리할 수 있는 요청의 개수를 출력한다.
  • 둘째 줄에 그 요청을 모두 처리할 때의 최소 비용 합을 출력한다.

힌트

예제의 첫 번째 요청은 농장 1 → 2 → 3 경로로만 갈 수 있고 비용은 20이다. 농장 3에서 출발하는 항공편이 없어서 두 번째 요청은 처리할 수 없다.