긴급 출동

시간 제한1초메모리 제한128 MB

요약
가중치가 있는 방향 그래프에서 여러 출발 지점 중 하나라도 범죄 현장 교차점에 도달하는 최단 시간을 여러 질의에 대해 구한다.
난이도

보통10점 중 4점

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

문제

범죄가 발생하면 경찰의 긴급 출동 차량이 최대한 빨리 범죄 현장에 도착하는 것이 매우 중요합니다. 그래야 증거를 최대한 확보하고, 피해자를 구하며, 어쩌면 범인까지 검거할 수 있습니다. 이를 위해서는 교통 정체 등을 피하려고 여러 곳에서 동시에 출동 차량을 보내는 것이 유용할 때가 많습니다. 이 문제에서는 여러 대의 차량 중 가장 먼저 범죄 현장에 도착하는 차량이 언제 도착하는지 계산하는 프로그램을 작성합니다.

도시는 nn개의 교차로와 mm개의 도로로 표현됩니다. 각 도로에 대해 시작 교차로 ii, 끝 교차로 jj, 이동 시간 t(i,j)≥0t(i,j) \ge 0 이 주어집니다. 어떤 쌍 (i,j)(i,j) 가 목록에 나타나지 않으면 ii에서 jj로 가는 직접 도로가 없다는 뜻입니다. 도로에는 방향이 있으므로 ii에서 jj로 가는 시간이 jj에서 ii로 가는 시간과 다를 수 있습니다(일방통행이거나 방향에 따라 교통 상황이 다를 수 있기 때문입니다). 또한 모든 차량의 출발 교차로와 목적지(범죄 현장) 교차로가 각각 교차로 번호로 주어집니다.

입력

첫 번째 줄에 세 정수 n,m,sn, m, s 가 주어집니다. n≤1000n \le 1000 은 교차로의 수, m≤10000m \le 10000 은 도로의 수, ss 는 이어지는 시나리오의 수입니다. 이어서 mm개의 줄에 각 도로가 주어지며, 각 줄에는 시작 교차로 ii, 끝 교차로 jj, 이동 시간 t(i,j)≥0t(i,j) \ge 0(실수)이 공백으로 구분되어 주어집니다.

그다음 ss개의 시나리오가 주어집니다. 각 시나리오의 첫 번째 줄에는 두 정수 c,kc, k 가 주어집니다. cc 는 범죄가 발생한 교차로 번호, kk 는 출동한 차량의 수입니다. 다음 줄에는 kk개의 정수가 공백 하나로 구분되어 주어지며, 각각 kk대의 차량이 출발한 교차로 번호입니다.

출력

각 시나리오마다 먼저 "Scenario x:" 를 한 줄에 출력합니다. 여기서 xx 는 시나리오 번호(1부터 시작)입니다. 다음 줄에는 어떤 차량이든 범죄 현장 cc 에 가장 먼저 도착하는 시각을 소수점 아래 둘째 자리까지 반올림한 실수로 출력합니다. 어떤 차량도 목적지 교차로에 도달할 수 없으면 대신 "Impossible." 을 출력합니다. 연속한 두 시나리오 사이는 빈 줄 하나로 구분합니다.

예제3

  1. 예제 1

    입력
    6 9 2
    1 2 3.5
    1 3 1.2
    3 4 4.9
    2 4 0.221
    5 4 0.1
    5 6 1.3
    4 6 1
    2 3 0
    3 2 5
    4 2
    1 3
    5 1
    6
    
    예상 출력
    Scenario 1:
    3.72
    
    Scenario 2:
    Impossible.
    
  2. 예제 2

    입력
    3 3 1
    1 2 1.0
    2 3 2.0
    1 3 10.0
    3 2
    1 2
    
    예상 출력
    Scenario 1:
    2.00
    
  3. 예제 3

    입력
    2 1 1
    1 2 3.5
    1 1
    1
    
    예상 출력
    Scenario 1:
    0.00