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

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

구멍 난 도로

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

요약
직사각형 도로 아래쪽 중앙에서 위쪽 중앙까지 원형 구멍을 피해 가는 최단 경로 길이를 구합니다.
난이도

보통10점 중 7점

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

문제

상태가 아주 나쁜 도로에서 작은 무선 조종 자동차를 몰고 있다. 도로에는 구멍이 가득하다. 구멍에 빠지면 자동차가 고칠 수 없을 만큼 망가지므로 구멍 위를 지나갈 수 없다. 도로 밖으로 나가는 것도 안 된다. 도로를 둘러싼 긴 풀숲에 들어가면 자동차를 영영 찾을 수 없다.

자동차는 아주 작아서 크기가 없는 점으로 본다. 도로는 폭이 WW미터, 길이가 LL미터이고 yy축과 나란히 놓여 있다. 자동차는 (W/2,0)(W/2, 0)에서 출발해 (W/2,L)(W/2, L)까지 가야 한다. 구멍은 모두 완전한 원 모양이고, 서로 겹치거나 닿지 않으며 도로의 가장자리와도 닿지 않는다. 구멍의 경계를 스치듯 지나가는 것은 허용한다.

구멍을 피해 도착점까지 가는 가장 짧은 경로의 길이를 구하라.

입력

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

각 테스트 케이스의 첫 줄에는 구멍의 개수 NN, 도로의 폭 WW, 도로의 길이 LL이 정수로 주어진다. 이어지는 NN개의 줄에는 구멍 하나를 나타내는 세 정수 xix_i, yiy_i, rir_i가 주어진다. 중심이 (xi,yi)(x_i, y_i)이고 반지름이 rir_i인 원이라는 뜻이다.

  • 0<T≤1000 < T \le 100
  • 0≤N≤1000 \le N \le 100
  • 0<L≤10000 < L \le 1000
  • 0<W≤1000 < W \le 100
  • ri<xi<W−rir_i < x_i < W - r_i
  • ri<yi<L−rir_i < y_i < L - r_i
  • 0<ri<min⁡(⌊W/2⌋,⌊L/2⌋)0 < r_i < \min(\lfloor W/2 \rfloor, \lfloor L/2 \rfloor)

출력

각 테스트 케이스마다 구멍을 피해 출발점에서 도착점까지 가는 가장 짧은 경로의 길이를 한 줄에 출력한다. 소수점 아래 여섯째 자리까지 반올림해 출력한다.

예제3

  1. 예제 1

    입력
    3
    1 50 1000
    20 500 5
    1 50 1000
    25 500 5
    3 100 1000
    50 50 25
    25 150 24
    75 150 24
    
    예상 출력
    1000.000000
    1000.050000
    1009.347978
    
  2. 예제 2

    입력
    2
    0 1 1
    0 100 1000
    
    예상 출력
    1.000000
    1000.000000
    
  3. 예제 3

    입력
    1
    1 4 4
    2 2 1
    
    예상 출력
    4.511299