Мосты(2 задач)
Применение обхода в глубину(3 задач)
Топологическая сортировка(2 задач)
Точки сочленения(1 задач)
У Пети в саду растет яблоня. Воодушевленный историей об Исааке Ньютоне, который, как известно, открыл закон всемирного тяготения после того, как ему на голову упало яблоко, Петя с целью повысить свою успеваемость по физике часто сидит под яблоней.
Однако, поскольку по физике у Пети твердая тройка, яблоки с его яблони падают следующим образом. В какой-то момент одно из яблок отрывается от ветки, на которой оно висит, и начинает падать строго вниз. Если в некоторый момент оно задевает другое яблоко, то то тоже отрывается от своей ветки и начинает падать вниз, при этом первое яблоко не меняет направление своего падения. Вообще, если любое падающее яблоко заденет другое яблоко на своем пути, то оно также начнет падать.
Таким образом, в любой момент каждое яблоко либо висит на ветке, либо падает строго вниз, причем все яблоки кроме первого, чтобы начать падать, должны сначала соприкоснуться с каким-либо другим падающим яблоком.
Выясните, какие яблоки упадут с Петиной яблони.
В первой строке вводится число \(N\) - количество яблок на Петиной яблоне (1 <= \(N\) <= 200). Следующие \(N\) строк содержат описания яблок. Будем считать все яблоки шарами. Каждое яблоко задается координатами своей самой верхней точки (той, где оно исходно прикреплено к дереву, длиной черенка пренебрежем) \(x_i\), \(y_i\) и \(z_i\) и радиусом \(r_i\) ( -10000 <= \(x_i\), \(y_i\), \(z_i\) <= 10000, 1 <= \(r_i\) <= 10000, все числа целые). Гарантируется, что изначально никакие яблоки не пересекаются (даже не соприкасаются). Ось OZ направлена вверх.
В первой строке выведите количество яблок, которые упадут с яблони, если начнет падать первое яблоко. В следующей строке выводите номера упавших яблок. Яблоки нумеруются, начиная с 1, в том порядке, в котором они заданы во входных данных.
4 0 0 10 4 5 0 3 1 -7 4 7 1 0 1 2 6
3 1 2 4
Город Мехико расположен в прекрасной долине, известной как Долина Мехико, на месте которой много лет назад было озеро. Около 1300 года ацтекские религиозные лидеры выпустили указ о том, что центр озера должен быть засыпан, чтобы построить столицу их империи. В настоящее время озеро полностью осушено.
Вокруг озера до появления ацтеков были расположены c прибрежных городов. Некоторые из этих городов заключили между собой коммерческие соглашения. Между городами, установившими коммерческие соглашения, по озеру на лодках перевозились различные товары. Любую пару городов можно было соединить отрезком прямой, полностью проходящим через озеро.
В какой-то момент короли городов решили упорядочить товароперевозки. Они разработали маршрут товароперевозок, который соединяет все города вокруг озера. Маршрут удовлетворяет следующим условиям:
*Он начинается в каком-либо городе, проходит через каждый прибрежный город и заканчивается в городе, отличном от того, в котором он начался.
*Маршрут проходит через каждый город ровно один раз.
*Любые два последовательно посещаемых города маршрута обязаны иметь между собой коммерческое соглашение.
*Маршрут состоит из отрезков прямых, каждый из которых соединяет два последовательно посещаемых города маршрута.
*Чтобы избежать столкновения лодок, маршрут не должен иметь самопересечений.
Напишите программу, которая по заданному числу городов \(c\) и списку коммерческих соглашений между городами, найдет маршрут товароперевозок, удовлетворяющий указанным выше условиям.
3 ≤ \(c\) ≤ 1000, \(c\) – число городов вокруг озера
На вход Вашей программы поступают данные в следующем формате:
СТРОКА 1: Содержит целое число \(c\).
СТРОКА 2: Содержит целое число \(n\) – количество коммерческих соглашений.
СЛЕДУЮЩИЕ \(n\) СТРОК: Каждая строка описывает одно коммерческое соглашение (одно соглашение описывается один раз). В строке задаются два целых числа, разделенных пробелами, которые соответствуют номерам городов, заключивших между собой коммерческое соглашение.
Если возможно построить маршрут товароперевозок, выведите c строк, в каждой из которых записано целое число. Эти числа представляют собой порядок посещения городов по маршруту товароперевозок. Если невозможно построить маршрут товароперевозок, удовлетворяющий всем указанным требованиям, выведите одну строку, содержащую отрицательное целое число -1.
Если существует несколько маршрутов товароперевозок, удовлетворяющих всем указанным требованиям, выведите любой из них.
Ряд тестов с общей суммой 30 баллов будет удовлетворять следующим ограничениям:
3 ≤ \(m\) ≤ 10
3 ≤ \(n\) ≤ 10
7 9 1 4 5 1 1 7 5 6 2 3 3 4 2 6 4 6 6 7
5 6 7 1 4 3 2
Андрюше на день рождения подарили хомячка. Пока Андрюша не купил для него клетку, он решил сделать ему клетку из подручных средств. Для изготовления клетки он решил использовать набор кубиков, подаренный ему на прошлый день рождения. Однако, неожиданно выяснилось, что сестра Андрюши склеила кубики суперклеем, и отделить их друг от друга не представляется возможным.
Все кубики оказались склеены в две фигуры. Любые два кубика в каждой из фигур либо не имеют общих точек, либо имеют общую грань, либо имеют общее ребро, но в последнем случае есть кубик, с которым каждый из них имеет общую грань. Каждую фигуру можно положить на стол так, что каждый кубик будет касаться стола одной из своих граней.
Теперь Андрюша хочет положить эти две фигуры на стол так, чтобы получилась клетка для хомячка. Фигуры должны быть положены таким образом, чтобы каждый кубик касался стола гранью. Стороны нижних граней кубиков должны быть параллельны сторонам стола. Любые два кубика, принадлежащие различным фигурам, должны либо не касаться друг друга, либо иметь общую грань, либо иметь общее ребро. Фигуры разрешается поворачивать и переворачивать.
В первой строке вводятся два числа: \(h_1\) и \(w_1\) (1 <= \(h_1\), \(w_1\) <= 10). Следующие \(h_1\) строк содержат по \(w_1\) символов и описывают первую фигуру, вид сверху. Каждый из этих символов - либо "*" (звездочка), либо "." (точка), звездочка обозначает кубик, а точка – пустое место.
Далее в отдельной строке вводятся два числа: \(h_2\) и \(w_2\) (1 <= \(h_2\), \(w_2\) <= 10). Следующие \(h_2\) строк содержат по \(w_2\) символов и описывают вторую фигуру в формате, аналогичном формату первой. Каждая из фигур связна и содержит хотя бы один кубик.
Выведите одно число – максимальную площадь, которая может быть доступна хомячку. Если сделать клетку для хомячка невозможно, выведите 0.
8 8 ........ .***.... ..**.... .*****.. ...*.*.. ...***.. ****.... ........ 8 8 ........ ........ ........ ........ *******. ........ ........ ........
4
Рассмотрим таблицу, состоящую из \(N\) строк и \(M\) столбцов. Если в каждой ячейке такой таблицы стоит целое число, назовем такую таблицу целочисленной матрицей. Скажем, что эта матрица кратна чиcлу \(p\), если все числа в ее ячейках кратны \(p\).
Рассмотрим теперь суммы элементов матрицы по строкам и столбцам соответственно. Обозначим сумму чисел \(i\)-й строки за \(H_i\), а сумму чисел \(j\)-го столбца за \(V_j\). Упорядоченный набор чисел (\(H_1\), \(H_2\), …, \(H_N\), \(V_1\), \(V_2\), …, \(V_M\)) назовем профилем матрицы. Скажем, что матрица почти кратна \(p\), если все числа, входящие в ее профиль, кратны \(p\). Почти кратная 5 матрица и ее профиль изображены на рисунке 1.
В первой строке входных данных задаются целые числа \(p\) (1 <= \(p\) <= 10), \(N\) и \(M\) (1 <= \(N\), \(M\) <= 30). Следующие \(N\) строк содержат по \(M\) целых неотрицательных чисел, не превышающих 1000, которые являются элементами исходной матрицы \(A\).
Выведите матрицу \(B\) по строкам - сначала \(M\) элементов первой строки, затем \(M\) элементов второй, и т. д. Разделяйте числа пробелами и/или переводами строк. Заботиться о красивом форматировании таблицы не надо. Если искомой матрицы не существует, выведите единственное число - "-1". Если решений несколько, выведите любое из них.
3 3 3 1 2 3 2 3 1 3 1 2
3 0 3 0 3 3 3 3 0
Из прямоугольного листа клетчатой бумаги (\(M\) строк, \(N\) столбцов) удалили некоторые клетки. На сколько кусков распадётся оставшаяся часть листа? Две клетки не распадаются, если они имеют общую сторону.
В первой строке находятся числа \(M\) и \(N\), в следующих \(M\) строках - по \(N\) символов. Если клетка не была вырезана, этому соответствует знак #, если вырезана - точка. 1 <= \(M\), \(N\) <= 100.
Вывести одно число.
5 10 ##..#####. .#.#.#.... ###..##.#. ..##.....# .###.#####
5