Обслуживание номеров
Вы работаете в компании, которая проектирует милые, смешные роботы-пылесосы. На высоком уровне поведение роботов разделено на три режима:
Исследование
Уборка
Восстание против человечества
К сожалению, потребительские тесты показали, что последние два режима работают идеально, тогда как режим исследования все еще имеет ошибки. Вам поручено отладить его.
В начале режима исследования робот размещается в комнате с выпуклым многоугольником. У него есть датчики, которые должны сообщать о расположении всех стен. Ваша задача — написать программу, которая проверяет правильность этих показаний. Для этого робот должен физически коснуться каждой стены в комнате.
Ваша задача такая: зная форму комнаты в виде выпуклого многоугольника с стенами и начальную точку внутри него, определить кратчайший маршрут, который касается каждой стены и возвращается к . Касание угла считается касанием двух смежных стен.
Входные данные
Каждый тестовый случай начинается со строки, содержащей количество вершин многоугольника и целые координаты и начальной точки робота . Далее идут строк, каждая из которых содержит два целых числа , , определяющих вершину многоугольника. Вершины приведены в порядке, противоположном часовой стрелке, все внутренние углы меньше градусов, многоугольник не самопересекается, и начальная точка робота находится строго внутри многоугольника.
Выходные данные
Для каждого тестового случая выведите номер случая и длину желаемого маршрута с точностью до двух знаков после запятой.