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

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

GRAD

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

요약
새 도시는 기존 도로 양 끝 도시와 두 도로로 연결되며 조회마다 두 도시 사이 최단 도로 거리를 출력합니다.
난이도

어려움10점 중 9점

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

문제

도로망은 좌표 평면 위의 도시와, 두 도시를 잇는 직선 도로로 구성된다. 도로는 교차할 수 있지만, 다른 도로로 바꿔 탈 수 있는 곳은 그 도로가 연결한 두 도시뿐이다. 도로 길이는 두 도시 사이의 유클리드 거리다.

처음에는 도시 1과 2만 있고 서로 도로로 연결된다. 이후 각 단계에서 새 도시가 하나 추가되며, 그 순간 서로 도로로 직접 연결된 두 기존 도시 A, B와 각각 새 도로로 연결된다.

명령을 처리하는 프로그램을 작성한다.

  • d X Y A B: 좌표 (X,Y)(X,Y)에 새 도시를 추가하고, 그 순간 도로로 직접 연결된 A와 B에도 각각 도로로 연결한다.
  • u A B: 두 도시 사이 최단 도로 거리를 출력한다.

입력

도시 1, 2의 좌표와 명령 수 NN이 주어진다. 각 명령은 d 또는 u 형식이다. 같은 좌표의 도시는 없다.

출력

각 u 명령에 대해 거리를 한 줄에 출력한다. 공식 정답과의 절대 오차는 0.10.1 이하여야 한다.

예제2

  1. 예제 1

    입력
    6 4
    10 4
    9
    d 6 7 2 1
    u 1 2
    u 3 2
    d 10 2 1 2
    u 3 4
    d 12 7 2 4
    u 5 3
    u 4 5
    u 1 5
    
    예상 출력
    4.000000
    5.000000
    7.000000
    8.605551
    5.385165
    7.605551
    
  2. 예제 2

    입력
    1 1
    3 8
    10
    d 8 2 1 2
    u 2 1
    d 2 9 1 3
    u 1 4
    d 4 7 3 4
    u 4 3
    d 6 1 5 4
    u 6 5
    d 0 0 4 6
    u 7 3
    
    예상 출력
    7.280110
    8.062258
    9.219544
    6.324555
    18.439089