만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

울타리

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

요약
정사각형 목초지와 기존 울타리 선분들이 주어질 때, 목초지를 완전히 둘러싸는 데 필요한 새 울타리의 최소 총 길이를 구합니다.
난이도

어려움10점 중 8점

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

문제

JOI 씨는 IOI 나라에 넓은 땅을 소유하고 있다. IOI 나라는 X축과 Y축이 서로 직교하는 좌표평면으로 나타낸다. 땅은 X좌표와 Y좌표가 모두 −10100-10100 이상 1010010100 이하인 영역이다. 그 안의 목장은 X좌표와 Y좌표가 모두 −S-S 이상 SS 이하인 영역이며, JOI 씨는 여기서 소를 기른다.

JOI 씨는 소가 빠져나가지 못하도록 울타리로 목장을 둘러싸려고 한다. 울타리는 길이가 양의 실수인 선분이다. 목장 내부의 점에서 땅 밖의 점으로 가는 경로는 모두 울타리 위의 점(울타리 끝점 포함)을 지나야 한다.

이미 세워진 울타리는 활용할 수 있다. 기존 울타리 중 두 울타리가 공통점을 가지면, 그 점은 두 울타리 중 적어도 하나의 끝점이다.

JOI 씨는 새 울타리를 원하는 만큼 세울 수 있다. 새 울타리의 길이와 방향은 자유롭지만, 목장 내부를 지나거나 땅 밖으로 나가서는 안 된다. 목장의 경계를 따라 세우는 것은 허용된다. 길이가 ll (l>0l > 0)인 새 울타리의 비용은 ll이다. 두 울타리가 교차해도 되고, 끝점끼리 겹쳐도 되며, 한 울타리의 끝점이 다른 울타리 위에 놓여도 된다.

목장의 크기와 기존 울타리 정보가 주어졌을 때, 목장을 둘러싸는 데 필요한 최소 총비용을 구하는 프로그램을 작성하라.

입력

첫째 줄에 정수 NN과 SS가 주어진다. 목장은 X좌표와 Y좌표가 모두 −S-S 이상 SS 이하인 영역이고, 기존 울타리는 NN개이다.

둘째 줄부터 NN개의 줄에 걸쳐 정수 AiA_i, BiB_i, CiC_i, DiD_i가 주어진다. 이는 ii번째 기존 울타리가 (Ai,Bi)(A_i, B_i)와 (Ci,Di)(C_i, D_i)를 잇는 선분임을 뜻한다.

출력

목장을 둘러싸는 데 필요한 최소 총비용을 한 줄에 출력한다. 절대오차가 0.010.01 이하이면 정답으로 인정하며, 소수점 이하 자릿수는 자유롭게 출력해도 된다.

제한

  • 1≤N≤1001 \le N \le 100
  • 1≤S≤2001 \le S \le 200
  • −200≤Ai,Bi,Ci,Di≤200-200 \le A_i, B_i, C_i, D_i \le 200 (1≤i≤N1 \le i \le N)
  • 기존 울타리는 목장 내부를 엄격하게 지나지 않는다.
  • 서로 다른 두 기존 울타리가 공통점을 가지면, 그 점은 두 울타리 중 적어도 하나의 끝점이다.

예제4

  1. 예제 1

    입력
    3 4
    -3 5 1 8
    -4 3 -4 6
    5 1 7 2
    
    예상 출력
    29.0000000000
    
  2. 예제 2

    입력
    1 2
    -3 -3 -3 -2
    
    예상 출력
    16.0000000000
    
  3. 예제 3

    입력
    4 3
    4 -1 3 4
    -4 2 -2 4
    -4 0 -5 6
    0 -6 5 -2
    
    예상 출력
    14.1392801789
    
  4. 예제 4

    입력
    10 80
    175 95 60 -146
    -106 57 18 185
    190 -68 177 -142
    84 -195 127 -179
    34 143 126 69
    -92 133 -190 80
    -157 -66 -119 -161
    -85 -124 129 -171
    141 181 175 175
    107 -38 150 148
    
    예상 출력
    238.4778364511