앨리스와 폭탄

서로 겹치지 않는 다각형들과 폭탄 지점, 원점에 있는 앨리스가 주어질 때, 어떤 건물이 폭탄과의 선분을 막을 때까지 다각형 내부를 지나지 않고 달리는 최단 거리를 구한다.

어려움8기하최단 경로그래프구현아직 제출이 없습니다시간 제한8초메모리 제한512 MB

문제

앨리스와 밥은 서로 사랑하는 사이였지만 지금은 서로를 미워한다.

어느 날 앨리스는 가방 하나를 주웠다. 둘이 데이트할 때 밥이 들고 다니던 가방처럼 보였다. 그때 째깍거리는 소리가 들렸다. 앨리스는 밥이 폭탄으로 자신을 해치려 한다는 것을 직감했다. 다행히 폭탄은 아직 터지지 않았고, 건물 뒤로 몸을 숨길 시간이 조금 남아 있다.

이 도시는 무한한 평면이고, 건물은 각각 다각형 하나로 나타난다. 앨리스는 점 하나로 본다. 폭발이 일어나면 폭풍은 즉시 퍼진다. 앨리스와 폭탄을 잇는 선분이 어떤 건물의 내부도 지나지 않으면 폭풍이 앨리스에게 닿는다. 선분이 건물의 경계에만 닿는 경우에는 폭풍을 막지 못한다. 따라서 앨리스는 자신과 폭탄을 잇는 선분이 어떤 건물의 내부를 지날 때에만 안전하다.

아래 그림은 폭발의 예다. 왼쪽 그림은 폭탄과 건물(검게 칠한 다각형)을 보여 준다. 오른쪽 그림에서 회색으로 칠한 영역이 폭풍이 닿는 범위다.

앨리스는 건물 내부로 들어갈 수 없지만, 경계를 밟거나 경계를 따라 달릴 수는 있다. 앨리스는 (0,0)(0, 0)에서 출발해 건물 내부를 지나지 않는 경로를 따라 안전한 점까지 달린다. 앨리스가 달리는 거리의 최솟값을 구하여라.

어떤 점 QQ 자체는 안전하지 않아도 안전한 점이 QQ에 얼마든지 가깝게 존재할 수 있다. 이때는 QQ까지 달리는 거리가 답이 된다. 즉 답은 안전해지기 위해 달려야 하는 거리의 하한이다.

입력

입력은 여러 테스트 케이스로 이루어진다. 각 테스트 케이스의 형식은 다음과 같다.

N
bx by
m_1 x_{1,1} y_{1,1} ... x_{1,m_1} y_{1,m_1}
...
m_N x_{N,1} y_{N,1} ... x_{N,m_N} y_{N,m_N}

첫 줄에 건물의 수 NN (1N1001 \le N \le 100)이 주어진다. 둘째 줄에 폭탄의 위치 bxb_x, byb_y (10000bx,by10000-10000 \le b_x, b_y \le 10000)가 주어진다. 이어지는 NN개의 줄에는 건물의 정보가 하나씩 주어진다. 각 줄은 다각형의 꼭짓점 수 mim_i (3mi1003 \le m_i \le 100, i=1Nmi500\sum_{i=1}^{N} m_i \le 500)로 시작하고, 그 뒤에 꼭짓점의 좌표 xi,jx_{i,j}, yi,jy_{i,j}mim_i쌍 이어진다. 모든 좌표는 절댓값이 1000010000 이하인 정수다.

다음 조건이 보장된다.

  • 다각형은 자기 자신과 교차하지 않는다.
  • 서로 다른 두 다각형은 공통점을 갖지 않는다.
  • 각 다각형의 꼭짓점은 반시계 방향으로 주어진다.
  • 앨리스와 폭탄은 다각형 내부에 있지 않다.
  • 폭탄은 어떤 다각형 변의 연장선 위에도 있지 않다.

앨리스의 처음 위치는 (0,0)(0, 0)이다. 앨리스가 다각형의 경계 위에 있을 수는 있다.

N=0N = 0인 줄은 입력의 끝을 뜻한다. 이 줄은 테스트 케이스가 아니므로 처리하지 않는다.

출력

테스트 케이스마다 앨리스가 달려야 하는 거리의 최솟값을 한 줄에 출력한다. 소수점 아래 여섯 자리까지 반올림해 정확히 여섯 자리로 출력한다.