Необходимо организовать систему телефонного оповещения для определенной группы людей. Определяется капитан этой системы. Сначала мы разбиваем всех людей, входящих в сеть на k групп. (группа 1, группа 2, и т.д. : группа k). Капитан знает телефоны всех людей из первой группы. Некоторые члены первой группы знают некоторые телефоны членов второй группы и т.д. Аналогично члены группы i знают телефоны членов группы i+1. Мы хотим определить самую быструю последовательность звонков при таком соединении.
Каждое оповещение начинается с капитана, который всегда имеет номер 1. Как только член сети получает звонок с сообщением он может позвонить по известным ему номерам. Каждый звонок занимет ровно одну минуту, и звонить по разным номерам можно только последовательно.
Возьмем пример следующий пример сети (первое число - номер абонента, после двоеточия - номера, которые он знает)
1: 2 3 4, 3: 5, 4: 6, 5: 7 8 9 ,6: 8 9
Одна из возможных последовательностей звонков:
1 > 4, 1 > 3, 4 > 6, 1 > 2, 3 > 5, 6 > 9 ,5 > 7, 6 > 8
А вот другая:
1 > 2, 1 > 3, 1 > 4, 3 > 5, 4 > 6, 5 > 7, 5 > 8, 6 > 9
Очевидно, в первом случае сообщение проходит быстрее. Задача состоит в нахождении самой быстрой последовательности звонков в заданной сети. Имя программы net.pas.
В первой строке входного файла net.dat содержится число членов сети оповещения 0
Выходной файл net.sol в первой строке содержит минимальное время оповещения (время необходимое, чтобы сообщение получили все члены сети). В последующих строках идут пары (отправитель, получатель) которые звонят в текущий момент времени. Например, если в момент времени 2 первый абонент звонит третьему, и 4-й - 6-му, то можно вывести либо 1 3 4 6 либо 4 6 1 3 в одну строку.