Государство Флатландия представляет собой прямоугольник размером \(M\) × \(N\), состоящий из единичных квадратиков. Флатландия разделена на K провинций (2 <= \(K\) <= 100). Каждая провинция представляет собой связное множество квадратиков, т.е. из каждой точки провинции можно дойти до любой другой ее точки, при этом разрешается переходить с квадратика на квадратик, только если они имеют общую сторону (общей вершины недостаточно). Во Флатландии нет точки, которая граничила бы более чем с тремя провинциями (т.е. четыре квадратика, имеющие общую вершину, не могут принадлежать четырем разным провинциям).
Каждая провинция имеет свой символ. Столица Флатландии находится в провинции, которой принадлежит символ \(A\) (заглавная латинская буква \(A\)). Провинция называется пограничной, если она содержит граничные квадратики. Провинция, в которой находится столица Флатландии, не является пограничной.
Король соседнего с Флатландией королевства Ректилания решил завоевать Флатландию. Для этого он хочет захватить столицу Флатландии. Однако он знает, что сил его армии недостаточно, чтобы сделать это сразу. Поэтому сначала он хочет окружить столичную провинцию, чтобы ослабить силы противника долгой блокадой, а потом захватить столицу.
Чтобы окружить провинцию, требуется захватить все провинции, с которыми она граничит. Две провинции граничат, если существует два квадратика, имеющие общую сторону, один из которых принадлежит первой из них, а другой - второй. Чтобы захватить провинцию, надо чтобы выполнялось одно из двух условий: либо она пограничная, либо граничит с какой-либо уже захваченной провинцией.
Чтобы сберечь силы своей армии, король Ректилании хочет установить блокаду столичной провинции, захватив как можно меньше провинций. Помогите ему выяснить, сколько провинций требуется захватить. Захватывать столичную провинцию нельзя, поскольку для этого сил армии Ректилании пока недостаточно.
В первой строке вводятся числа \(M\) и \(N\) (3 <= \(M\), \(N\) <= 200). Следующие \(M\) строк содержат \(N\) символов каждая и задают карту Флатландии. Символ, находящийся в \(i\) + 1-й строке входных данных на \(j\)-м месте, представляет собой символ провинции, которой принадлежит квадратик (\(i\), \(j\)). Все символы имеют ASCII-код больше 32 (пробела).
Выведите единственное число - количество провинций, которые требуется захватить. Если установить блокаду невозможно, выведите "-1".
3 3 BBB BAB BBB
1
Дима обнаружил у папы на столе специальный чертежный прибор, похожий на циркуль - измеритель. Измеритель отличается от обычного циркуля тем, что в обеих его ножках находятся иголки (у обычного циркуля в одной ножке находится иголка, а в другой - грифель).
Дима взял клетчатый лист бумаги, установил между иглами измерителя некоторое расстояние, прочно зафиксировав его, и начал втыкать измеритель в лист бумаги. Каждый раз Дима втыкал в лист обе иглы измерителя, при этом он всегда делал это так, что дырочки получались в точках пересечениях линий, которыми лист разлинован на клетки. При этом в одну и ту же дырку Дима мог вставлять измеритель несколько раз.
Вечером папа нашел лист, с которым развлекался Дима, и решил выяснить, какое расстояние между иглами измерителя Дима мог установить. Все, что знает папа - координаты дырок, проделанных иглами измерителя. Помогите Папе решить поставленную задачу.
В первой строке вводится число \(n\) - количество дырок (2 <= \(n\) <= 1000). Следующие n строк содержат по два целых числа - координаты дырок. Координаты не превышают \(10^4\) по абсолютной величине.
В первой строке выведите \(k\) - количество различных расстояний, которые Дима мог установить между иглами измерителя. Следующие k строк должны содержать искомые расстояния, по одному вещественному числу в строке. Расстояния должны быть выведены в возрастающем порядке. Каждое число должно быть выведено с точностью не менее, чем 10-9.
Гарантируется, что существует по крайней мере одно расстояние, которое Дима мог установить между иглами измерителя.
4 0 0 1 1 1 0 0 1
2 1.0 1.4142135623730951
Джон работает на огромной парковке. Парковка представляется собой прямоугольное поле \(n \times m\), разбитое на \(n \times m\) квадратных позиций размера \(1 \times 1\). Одну из угловых позиций занимает выезд с парковки.
Машин на парковке много и вывести машину не так уж просто. Единственное, что Джон может сделать — это переместить один из автомобилей на соседнюю позицию, если она свободна. Соседними считаются позиции, имеющие общую сторону. Однако задача усложняется наличием на парковке столбов. На позиции, где стоят столбы, нельзя поставить машину. Парковка вся занята машинами и столбами и единственное свободное место — выезд с парковки. Задача Джона — вывести с парковки один из автомобилей. Помогите ему узнать, какое минимальное число действий ему придется совершить.
В первой строке входного файла два целых числа \(n\) и \(m\)
(\(1 \le n, m \le 50\)) — размеры парковки.
Далее следуют \(n\) строк по \(m\) символов в каждой.
Символ «.
» означает пустую позицию, единственная
пустая позиция — выезд с парковки.
Символ «#
» означает столб. Столбы нельзя перемещать
и на место столба нельзя ставить автомобили.
Символ «c
» означает автомобиль.
Символ «X
» — автомобиль, который необходимо
вывести с парковки.
Автомобиль считается выведенным, как только он достигает
выезда с парковки.
Гарантируется, что хотя бы одно из чисел \(n\), \(m\) больше единицы
и каждый из символов «.
» и «X
» встречается во входном
файле ровно один раз.
Символ «.
» всегда располагается в верхнем левом углу парковки.
Если машину вывести невозможно, выведите в выходной
файл единственное слово «Impossible
».
Иначе в единственной строке выведите единственное число —
минимальное количество действий для вывода автомобиля.
2390 год. В заброшенном метрополитене города N-ска завелась громадная змея-мутант. Она ползает вдоль перегонов между станциями, повергая в ужас случайно забредающих под землю потомков людей. Размеры змеи настолько велики, что иногда голова появляется на той станции, вдоль которой еще ползет какая-то другая часть тела, и змея повергает в ужас сама себя. Чтобы избавиться от этой проблемы, змея поймала вас и потребовала написать для нее программу, которая может ей прокладывать кратчайший маршрут для головы от одной станции до другой, не проползая при этом по станциям, где находятся участки ее тела.
Будем называть маршрутом последовательность станций, каждые две последовательные из которых соединены перегоном.
Все перегоны в метрополитене имеют одинаковую длину, а змея имеет длину в \((l - 0.5)\) перегонов. Змея может ползти вдоль перегонов, переползая с одного на другой на станциях. Змея может ползти вдоль перегона только в один слой, а ее голова не может появляться на станции, если в этот момент по станции проползает другая часть ее тела. Змея умеет ползать только головой вперед.
С точки зрения теории графов метрополитен города N-ска является вершинным кактусом. Это означает, что ни одна станция не лежит на двух различных циклических маршрутах и никакие два перегона не соединяют одну и ту же пару станций, никакой перегон не соединяет станцию саму с собой, от каждой станции до любой другой до появления змеи можно было добраться по перегонам.
По заданным карте метрополитена, начальному положению змеи и станции, на которую змея хочет поместить свою голову, выясните, какое минимальное количество перегонов придется проползти змее.
В первой строке ввода записано два числа \(n\) и \(k\) — количество станций и количество перегонов в метрополитене (\(1 \le n, k \le 100\,000\)). В следующих \(k\) строках записано по два различных целых числа \(a\) и \(b\) — номера станций, соединенных соответствующим перегоном.
В следующей строке записано единственное число \(l\), характеризующее длину змеи. В следующей строке записано \(l + 1\) число: номера станций, на которых лежат последовательные части змеи, начиная с головы, а также номер станции, в перегоне к которой лежит хвост змеи длиной в \(0.5\) перегона. Исходно змея расположена таким образом, что ни в каком перегоне не находится одновременно две различных части змеи и змея не пересекает себя ни на какой станции.
В последней строке записано единственное целое число — станция, на которую змея хочет поместить свою голову.
Если змея сможет выполнить свою задачу, выведите длину пути — количество перегонов, через которые необходимо проследовать голове змеи.
Если задача невыполнима, выведите единственное число \(-1\).