ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Задача 102898
УсловиеВ некоторой стране протянута сеть железных дорог. Требуется наладить сообщение между двумя различными городами A и B, пустив наибольшее возможное число поездов от A до B. Из-за конструктивных особенностей поездов, нарушений расписания и прочих объективных причин необходимо, чтобы никакие два поезда не проезжали через один город, за исключением,конечно, городов A и B. Входные данные В первой строке входного файла записаны целое число M – количество городов в стране (2 ≤ M ≤ 25) и номера городов A и B (города нумеруются числами от 1 до M). Далее перечислены все железные дороги страны, каждая из них задается парой номеров городов, которые она соединяет. Все дороги считаются одноколейными и ориентированными, то есть ведущими из первого города пары во второй, но не наоборот. Выходные данные Выведите в первую строку выходного файла целое число K – максимальное количество поездов, которые можно пустить из A в B. Далее выведите K маршрутов поездов, по одному в каждой строке. Каждый маршрут задается номерами городов, через которые проходят поезда в порядке следования от A до B. Пример входного файла 5 2 4 2 1 2 3 1 3 3 1 1 4 3 4 3 5 Пример выходного файла 2 2 1 4 2 3 4 РешениеСкачать архив тестов и решенийПостроим ориентированный граф, соответствующий заданной сети железных дорог. Расщепим каждую из его вершин-городов, за исключением A и B, на две. Первая из них будет «пунктом въезда» в город, а вторая – «пунктом выезда». Говоря формально, каждая вершина v графа заменяется на две новых – v1 и v2, причем все ребра, входившие ранее в v, теперь будут входить в v1 , а все ребра, исходившие ранее из v, будут исходить из v2 , кроме того, добавляется ребро (v1, v2). В результате этой операции мы свели условие непересечения маршрутов поездов по вершинам к условию их непересечения по ребрам. Теперь выбираем города A и B в качестве источника и стока, а пропускные способности всех ребер полагаем равными единице. В получившейся сети ищем максимальный поток, его величина и есть искомое число K (докажите это и придумайте, как по максимальному потоку построить маршруты поездов). Замечание Идея задачи взята из книги [Кормен 99]. Там же, в главе 27, можно найти очень хорошее изложение алгоритмов поиска максимального потока в сети. Источники и прецеденты использования |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|