Украинские Олимпиады
Украинские Олимпиады по Информатике
по Информатике

Соревнования

Информация
Добро пожаловать
Гостевая книга
Обратная связь
О сайте

ACM-олимпиада
Новости
Правила
Задачи
Сдать задачу
Таблица результатов

IOI-олимпиада
Новости
Правила
Последние задачи
Последние результаты
Архив

"Трудно-решаемая" задача
Новости
Правила
Последняя задача
Последние результаты
Архив

Логические игры
Новости
Правила
Виды игр
Последний турнир
Архив

Викторина
Новости
Правила
Последняя викторина
Архив

 
 
Всеукраинские подготовительные сборы Киев'2000

Система оповещения

  

 

Необходимо организовать систему телефонного оповещения для определенной группы людей. Определяется капитан этой системы. Сначала мы разбиваем всех людей, входящих в сеть на 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

Пример входного файла
9
1 2 3 4
2
3 5
4 6
5 7 8 9
6 8 9
7 8
9
Выходные данные

Выходной файл net.sol в первой строке содержит минимальное время оповещения (время необходимое, чтобы сообщение получили все члены сети). В последующих строках идут пары (отправитель, получатель) которые звонят в текущий момент времени. Например, если в момент времени 2 первый абонент звонит третьему, и 4-й - 6-му, то можно вывести либо 1 3 4 6 либо 4 6 1 3 в одну строку.

Пример выходного файла
4
1 4
1 3 4 6
1 2 3 5 6 9
5 7 6 8

  

 

Сборник

Олимпиады
Международные
Всесоюзные
Всеукраинские (IV этап)
Разные...

Всеукраинские олимпиады
1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002

Отборочные сборы
1992 1993 1994 1996 1997 1998 1999 2000 2001 2002

Международные олимпиады
1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002

Всесоюзные олимпиады
1989 1990 1991 1992

Информация
Список ссылок
Литература
Статьи
Рассылки
Интервью

© Разработано рабочей группой UOI 1998-2002 гг.