Пакет 14. Основные алгоритмы на графах: представление, поиск

В задачах, в которых выделены разделы «Входные данные» и «Выходные данные» предполагается, что данные считываются из текстового файла INPUT.TXT, а результат записывается в файл OUTPUT.TXT

1. Создать и отладить модуль с разобранными на лекции примерами

2. В клубе N человек. Многие из них - друзья. Так же известно, что друзья друзей так же являются друзьями. Требуется выяснить, сколько всего друзей у конкретного человека в клубе.

Время: 1 сек. Память: 16 Мб

Входные данные

В первой строке входного файла INPUT. TXT заданы два числа: N и S (1 <= N <= 100; 1 <= S <= N), где N - количество человек в клубе, а S – номер конкретного человека. В следующих N строках записано по N чисел - матрица смежности, состоящая из единиц и нулей. Причем единица, стоящая в i-й строке и j-м столбце гарантирует, что люди с номерами i и j – друзья, а 0 – выражает неопределенность.

Выходные данные

В выходной файл OUTPUT. TXT выведите количество гарантированных друзей у человека с номером S, помня о транзитивности дружбы.

Пример

INPUT. TXT

OUTPUT. TXT

1

3 1
0 1 0
1 0 1
0 1 0

2

3. Открыв глаза, Принц Персии обнаружил, что находится на верхнем уровне подземного лабиринта Джаффара. Лабиринт состоит из h уровней, расположенных строго друг под другом. Каждый уровень представляет собой прямоугольную площадку, разбитую на m х n участков. На некоторых участках стоят колонны, поддерживающие потолок, на такие участки Принц заходить не может.

НЕ нашли? Не то? Что вы ищете?

Принц может перемещаться с одного участка на другой соседний свободный участок того же уровня, так же он может проломить пол под собой и оказаться уровнем ниже (на самом нижнем уровне пол проломить нельзя). Любое перемещение занимает у Принца 5 секунд.

На одном из участков нижнего уровня Принца ждет Принцесса. Помогите Принцу найти Принцессу, потратив на это как можно меньше времени.

Время: 1 сек. Память: 16 Мб

Входные данные

В первой строке входного файла INPUT. TXT содержатся натуральные числа h, m и n — высота и горизонтальные размеры лабиринта (2 ≤ h, m, n ≤ 50). Далее во входном файле приведены h блоков, описывающих уровни лабиринта в порядке от верхнего к нижнему. Каждый блок содержит m строк, по n символов в каждой: «.» обозначает свободный участок, «о» обозначает участок с колонной, «1» обозначает свободный участок, в котором оказался Принц в начале своего путешествия, «2» обозначает свободный участок, на котором томится Принцесса. Символы «1» и «2» встречаются во входном файле ровно по одному разу: символ «1» — в описании самого верхнего уровня, а символ «2» — в описании самого нижнего. Соседние блоки разделены одной пустой строкой.

Выходные данные

В выходной файл OUTPUT. TXT выведите минимальное время в секундах, необходимое Принцу, чтобы найти Принцессу. Поскольку добро всегда побеждает Зло, гарантируется, что Принц может это сделать.

Пример

INPUT. TXT

OUTPUT. TXT

1

3 3 3
1..
oo.
...

ooo
..o
.oo

ooo
o..
o.2

60

4. Дана система односторонних дорог, определяемая набором пар городов. Каждая такая пара (i, j) указывает, что из города i можно проехать в город j, но это не значит, что можно проехать и в обратном направлении.

Необходимо определить, можно ли проехать из заданного города A в заданный город B таким образом, чтобы посетить город C и не проезжать ни по какой дороге более одного раза.

Входные данные

В первой строке находится натуральное N (N ≤ 50) – количество городов (города нумеруются от 1 до N). Во второй строке находится натуральное M (M ≤ 100) – количество дорог. В каждой из следующих строк находятся номера городов A, B и C. В последней, (M+3)-й, строке находятся номера городов A, B и C.

Выходные данные

Ответом является последовательность городов, начинающаяся городом A и заканчивающаяся городом B и удовлетворяющая условиям задачи. Ответ должен быть записан в файл OUTPUT. TXT в виде последовательности номеров городов (по одному номеру в строке). Первая строка выходного файла должна содержать количество городов в последовательности. При отсутствии пути записать в первую строку файла число -1.

Пример

INPUT. TXT

OUTPUT. TXT

1

3

2

1 2

2 3

1 3 2

3

1

2

3