아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

색칠 터널

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

요약
색 순서와 색이 있는 선분 터널들이 주어질 때, 요구된 색 순서대로 터널을 통과하는 최단 경로의 길이를 구한다.
난이도

어려움10점 중 8점

유형
기하, 최단 경로, 동적 계획법
정답자
아직 제출이 없습니다

문제

장난감 공장은 제품을 색이 있는 터널들 사이로 이동시켜 색을 입힙니다. 원하는 최종 색을 얻으려면 제품은 정해진 순서대로 여러 색으로 칠해져야 합니다.

각 터널은 평면 위에 놓인, 고정된 색을 가진 하나의 선분입니다. 한 가지 색을 내는 터널이 여러 개일 수 있고, 서로 다른 터널이 같은 색을 가질 수도 있습니다. 어떤 색으로 칠해지려면 제품은 그 색 터널의 한 끝점에서 반대쪽 끝점까지 통과(완전히 지나가기)해야 하며, 통과 방향은 상관없습니다.

엄밀히 말하면, 칠해지지 않은 제품이 주어진 출발점에서 시작하여, 색 c1,c2,…,cnc_1, c_2, \ldots, c_n 순서로 칠해진 뒤 주어진 도착점까지 이동해야 합니다. 따라서 제품은 터널 t1,t2,…,tnt_1, t_2, \ldots, t_n 을 이 순서대로 통과해야 하며, 이때 터널 tit_i 의 색은 cic_i 입니다. 도중에 다른 터널을 지나가거나 가로질러도 되며, 색 조건을 만족해야 하는 것은 선택한 부분수열 t1,…,tnt_1, \ldots, t_n 뿐입니다. 통과와 통과 사이에 제품은 장애물이 없는 평면 위를 직선 구간으로 이동합니다. 경로는 스스로 교차하거나 터널을 통과하지 않고 단순히 가로지를 수 있으며(이 경우 칠해지지 않습니다), 같은 터널을 두 번 이상 통과해도 됩니다.

출발점에서 도착점까지 이러한 조건을 만족하는 가장 짧은 경로의 길이를 구하세요.

입력

첫째 줄에 테스트 케이스의 수를 나타내는 정수 tt (1≤t≤201 \le t \le 20) 가 주어집니다. 각 테스트 케이스는 다음과 같이 주어집니다.

  • 첫 줄: 네 실수 xs ys xt ytx_s\ y_s\ x_t\ y_t. 출발점 (xs,ys)(x_s, y_s) 와 도착점 (xt,yt)(x_t, y_t) 의 좌표입니다.
  • 둘째 줄: 색 수열. 먼저 그 길이를 나타내는 정수 mm (1≤m≤301 \le m \le 30) 이 오고, 이어서 mm 개의 정수 c1,…,cmc_1, \ldots, c_m (각각 [1,100][1, 100]) 이 순서대로 주어집니다.
  • 셋째 줄: 터널의 개수를 나타내는 정수 nn (1≤n≤601 \le n \le 60).
  • 이후 nn 개의 줄: 각 줄에 다섯 개의 수 x1 y1 x2 y2 cx_1\ y_1\ x_2\ y_2\ c 가 주어집니다. 한 터널의 두 끝점 (x1,y1)(x_1, y_1), (x2,y2)(x_2, y_2) (실수) 와 색 cc (정수, [1,100][1, 100]) 입니다.

수열에 등장하는 모든 색은 적어도 하나의 터널로 만들 수 있으므로, 유효한 경로는 항상 존재합니다.

출력

각 테스트 케이스마다 한 줄에, 요구된 색 순서대로 터널을 통과하면서 출발점에서 도착점까지 이동하는 최소 총 길이를 소수점 아래 셋째 자리까지 정확히 반올림하여 출력하세요.

예제3

  1. 예제 1

    입력
    1
    0 1.5 100 67
    4 1 4 3 1
    9
    10 10 20 20 1
    10 15 20.5 35.333 3
    30 15 14.55 12.5 1
    40 30 44 33 1
    29 84 33 58 4
    9 39 41 115 2
    75 47 37 69 4
    46 26 58 25 3
    73 48 27 59 3
    
    예상 출력
    240.610
    
  2. 예제 2

    입력
    1
    0 0 10 0
    1 5
    1
    3 0 7 0 5
    
    예상 출력
    10.000
    
  3. 예제 3

    입력
    1
    0 0 0 0
    1 2
    1
    3 4 3 -4 2
    
    예상 출력
    18.000