로봇 청소기
시간 제한5초메모리 제한128 MB
볼록 다각형과 내부의 시작점이 주어질 때, 모든 변에 닿은 뒤 시작점으로 돌아오는 최단 경로의 길이를 구한다.
문제
로봇 청소기는 청소를 시작하기 전에 방의 구조를 인식해야 한다. 로봇에 달린 센서는 로봇이 직접 부딪친 벽만 인식할 수 있다. 따라서 방의 모든 벽을 인식하려면 로봇은 방의 모든 벽에 한 번씩 부딪쳐야 한다.
방은 볼록 다각형 모양이다. 벽이 개인 방과 로봇의 시작 위치 가 주어질 때, 로봇이 모든 벽에 부딪친 뒤 다시 시작 위치 로 돌아오는 가장 짧은 경로의 길이를 구하여라. 로봇이 다각형의 꼭짓점에 부딪치면, 그 꼭짓점에서 만나는 두 벽 모두에 부딪친 것으로 본다.
입력
입력은 여러 개의 테스트 케이스로 이루어진다.
각 테스트 케이스의 첫째 줄에는 다각형의 꼭짓점 개수 ()과 로봇의 시작 위치 좌표 , ()가 주어진다. 다음 개의 줄에는 벽(다각형)의 꼭짓점 좌표 , ()가 주어진다.
꼭짓점은 반시계 방향으로 주어지고, 모든 내부각은 보다 작다. 다각형의 변은 서로 교차하지 않으며, 로봇의 시작 위치는 다각형 내부에 있다(변 위에 있는 경우는 없다).
출력
각 테스트 케이스마다 Case x: L 형식으로 한 줄에 출력한다. 여기서 는 부터 시작하는 테스트 케이스 번호이고, 은 최단 경로의 길이를 소수점 셋째 자리에서 반올림하여 소수점 둘째 자리까지 나타낸 값이다.