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

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

소방차 출동

시간 제한15초메모리 제한256 MB

요약
도로를 따라 어느 소방서에서 각 화재의 호스 반경 R 안에 드는 지점까지 가장 짧은 주행 거리를 구하고 도달할 수 없으면 -1을 출력합니다.
난이도

어려움10점 중 8점

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

문제

어떤 나라의 국토는 2차원 평면이다. 하늘을 나는 교통수단이 없어서 도로를 달리는 자동차가 가장 빠른 이동 수단이다. 도로는 평면 위에 놓인 nn개의 선분이고, 자동차는 도로 위에서만 움직인다.

화재가 일어나면 소방차가 소방서에서 출발한다. 소방서는 도로 위의 여러 지점에 있다. 소방차는 화재 지점과의 거리가 RR 이하인 곳에 도착하면 그 자리에서 호스로 불을 끈다. 화재 지점까지 갈 필요는 없고, 도로 위의 어느 점이든 화재 지점과의 거리가 RR 이하이기만 하면 된다.

도로의 배치와 소방서의 위치, 그리고 QQ개의 화재 지점이 주어진다. 각 화재마다 소방차가 달려야 하는 최소 거리를 구한다. 소방차는 어느 소방서에서 출발해도 되고, 이동 거리는 도로를 따라 잰다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다.

각 테스트 케이스는 다음과 같이 구성된다.

  • 첫 줄에 도로의 수 nn (1≤n≤1 0001 \le n \le 1\,000)과 진압 반경 RR (0≤R≤1 0000 \le R \le 1\,000)이 정수로 주어진다.
  • 이어지는 nn개의 줄에 도로 하나의 정보가 sxisx_i, syisy_i, exiex_i, eyiey_i, mim_i, ci1c_{i1}, ci2c_{i2}, …\dots, cimic_{im_i} 순서로 주어진다 (0≤sxi,syi,exi,eyi≤1 0000 \le sx_i, sy_i, ex_i, ey_i \le 1\,000, 0≤mi≤1000 \le m_i \le 100, 1≤∑mi≤1001 \le \sum m_i \le 100, 0≤cij≤10 \le c_{ij} \le 1).
    • ii번째 도로는 (sxi,syi)(sx_i, sy_i)와 (exi,eyi)(ex_i, ey_i)를 잇는 선분이다.
    • mim_i는 ii번째 도로 위에 있는 소방서의 개수이다.
    • cijc_{ij}는 ii번째 도로 위에서 소방서가 놓인 위치를 나타내는 실수이고, 그 소방서의 좌표는 (sxi×(1−cij)+exi×cij, syi×(1−cij)+eyi×cij)(sx_i \times (1 - c_{ij}) + ex_i \times c_{ij},\ sy_i \times (1 - c_{ij}) + ey_i \times c_{ij})이다.
    • cijc_{ij}를 제외한 모든 값은 정수이다.
  • 다음 줄에 화재의 수 QQ (1≤Q≤1 0001 \le Q \le 1\,000)가 주어지고, 이어지는 QQ개의 줄에 화재가 일어난 지점의 좌표 xix_i, yiy_i (0≤xi,yi≤1 0000 \le x_i, y_i \le 1\,000)가 정수로 주어진다.

서로 다른 두 도로는 많아야 한 점에서 만난다.

출력

각 화재마다 소방차가 달려야 하는 최소 거리를 소수점 아래 여섯째 자리까지 반올림해 한 줄에 출력한다. 소수점 아래는 항상 여섯 자리를 쓰고, 모자라는 자리는 0으로 채운다. 불을 끌 수 없는 화재라면 -1을 출력한다.

예제3

  1. 예제 1

    입력
    2
    3 1
    1 1 5 1 1 0.7
    1 3 5 5 0
    2 1 3 5 0
    2
    2 4
    5 4
    3 0
    1 3 5 3 0
    3 1 3 5 1 0.25
    1 1 5 5 0
    2
    5 5
    5 6
    
    예상 출력
    4.024433
    6.406155
    3.828427
    -1
  2. 예제 2

    입력
    1
    1 0
    0 0 10 0 1 0
    3
    0 0
    7 0
    5 3
    
    예상 출력
    0.000000
    7.000000
    -1
  3. 예제 3

    입력
    1
    1 3
    0 4 6 4 1 0
    3
    3 1
    6 1
    0 9
    
    예상 출력
    3.000000
    6.000000
    -1