만드는 중입니다

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

대체 마트

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

요약
각 질의마다 시작 지역 S에서 닫히지 않은 할인 마트 중 가장 가까운 곳의 번호와 최단 거리를 구합니다.
난이도

보통10점 중 6점

유형
최단 경로, 그래프, 힙
정답자
아직 제출이 없습니다

문제

민식이는 OJUZ 시에서 자취하고 있다. OJUZ 시에는 NN개의 지역과 MM개의 양방향 도로가 있으며, 그중 KK개의 지역에 할인마트가 있다. 지역 번호는 1 이상 NN 이하의 정수이다. 두 지역을 직접 잇는 도로는 최대 하나이고, 모든 도로의 양 끝 지역은 서로 다르다. 또한 어느 지역에서든 다른 지역으로 가는 길이 항상 있다.

민식이는 일과가 끝나면 할인마트에 들러 요리 재료와 간식거리를 산 뒤 자취방으로 돌아온다. 민식이는 항상 가장 빠른 길로 할인마트에 간다. 그런데 할인마트 몇 곳이 문을 닫을 때가 있다. 할인마트가 문을 닫으면 기존에 가던 길이 쓸모없어질 수 있다. 민식이는 자주 가던 할인마트가 문을 닫으면 어느 할인마트로 가야 할지 몰라 난감해한다.

민식이를 도와, 매 순간 어느 할인마트로 가야 하는지 구하는 프로그램을 작성하라. 단, 할인마트에서 집까지 가는 시간은 무시한다.

입력

첫 줄에 지역의 수 NN, 도로의 수 MM, 할인마트의 수 KK, 질의의 수 QQ가 주어진다. (2≤N≤50 0002 \le N \le 50\,000, N−1≤M≤80 000N-1 \le M \le 80\,000, 1≤K≤N1 \le K \le N, 1≤Q≤50 0001 \le Q \le 50\,000)

둘째 줄에는 할인마트가 있는 지역의 번호 KK개가 오름차순으로 주어진다.

셋째 줄부터 MM개의 줄에 도로의 양 끝점 PiP_i, QiQ_i와 길이 ViV_i가 주어진다. (1≤Pi,Qi≤N1 \le P_i, Q_i \le N, 1≤Vi≤10 0001 \le V_i \le 10\,000)

M+3M+3째 줄부터 QQ개의 줄에 질의가 주어진다. 각 질의는 출발 지역 SS, 문을 닫은 할인마트의 수 XX, 문을 닫은 할인마트가 있는 지역의 번호 C1,…,CXC_1, \ldots, C_X로 이루어진다. (0≤X≤min⁡(10,K−1)0 \le X \le \min(10, K-1), 1≤S,Ci≤N1 \le S, C_i \le N)

출력

QQ개의 줄에 걸쳐 각 질의마다 민식이가 가야 하는 할인마트의 번호(할인마트가 있는 지역의 번호)와 그곳까지 가는 최소 시간을 출력한다. 가장 빨리 갈 수 있는 할인마트가 여러 곳이면 번호가 가장 작은 곳을 출력한다.

예제1

  1. 예제 1

    입력
    4 5 2 4
    1 4
    1 2 5
    2 4 5
    4 3 5
    3 1 5
    2 3 1
    3 0
    1 1 1
    2 1 4
    4 0
    
    예상 출력
    1 5
    4 10
    1 5
    4 0