ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||
Версия для печати
Убрать все задачи Задан неориентированный граф с N вершинами, пронумерованными целыми числами от 1 до N. Напишите программу, которая последовательно решает следующие задачи: а) выясняет количество компонент связности графа; б) находит и выдает все такие ребра, что удаление любого из них ведет к увеличению числа компонент связности; в) определяет, можно ли ориентировать все ребра графа таким образом, чтобы получившийся граф оказался сильно связным (ориентированный граф называется сильно связным, если из любой его вершины можно пройти в любую другую, двигаясь по ребрам вдоль стрелок); г) ориентирует максимальное количество ребер, чтобы получившийся граф оказался сильно связным; д) определяет минимальное количество ребер, которые следует добавить в граф, чтобы ответ на пункт в) был утвердительным. Входные данные Во входном файле записано целое число N (1 ≤ N ≤ 100) и список ребер графа, заданных номерами концевых вершин. Выходные данные Ваша программа должна вывести в выходной файл последовательно ответы на пункты a)-д) в следующем формате: в первой строке запишите ответ на пункт а); во второй строке запишите количество ребер из ответа на пункт б), а в последующих строках выдайте сами эти ребра; в следующую строку выведите сообщение «NOT POSSIBLE», если требуемым в пункте в) способом ориентировать граф невозможно, иначе выведите сообщение «POSSIBLE»; далее выведите максимальное количество ребер графа, которые можно ориентировать (пункт г); в последующие строки выведите список этих ребер; в качестве ответа на пункт д) выведите количество ребер, которые следует добавить в исходный граф, а далее выведите сами эти ребра. Ребра задаются указанием номеров своих концевых вершин, а при выводе ответа на пункт г) должна быть указана их ориентация (вначале выводится номер начальной вершины, затем – номер конечной). Если ответ на пункт а) отличен от единицы, то пункты в) и г) решать не следует и ответы на них не выводятся. Баллы за пункт в) в случае утвердительного ответа на него начисляются лишь в том случае, если программа правильным образом ориентировала ребра графа (пункт г). Пример входного файла 4 1 2 2 4 3 4 4 1 Пример выходного файла 1 1 3 4 NOT POSSIBLE 3 1 2 2 4 4 1 1 1 3 Решение |
Страница: 1 [Всего задач: 4]
a) определяет, является ли заданный граф четно-нечетным; б) В случае отрицательного ответа на пункт а) находит максимальное подмножество X вершин графа такое, что для любых двух вершин i и j из X выполняется следующее условие: все пути между i и j состоят из четного числа ребер. Входные данные Первая строка входного файла содержит число вершин графа N (1 ≤ N ≤ 100), а каждая последующая – пару чисел (i, j), означающих, что в графе присутствует ребро, соединяющее вершины с номерами i и j. Выходные данные Первая строка выходного файла должна содержать ответ на пункт А в форме YES/NO. В случае отрицательного ответа на пункт А вторая строка должна содержать количество вершин в множестве X, а третья – номера вершин из этого множества в порядке возрастания, записанные через пробел. Если вариантов решений несколько, то достаточно вывести любое из них. Пример входного файла 3 1 2 Пример выходного файла NO 2 2 3
а) выясняет количество компонент связности графа; б) находит и выдает все такие ребра, что удаление любого из них ведет к увеличению числа компонент связности; в) определяет, можно ли ориентировать все ребра графа таким образом, чтобы получившийся граф оказался сильно связным (ориентированный граф называется сильно связным, если из любой его вершины можно пройти в любую другую, двигаясь по ребрам вдоль стрелок); г) ориентирует максимальное количество ребер, чтобы получившийся граф оказался сильно связным; д) определяет минимальное количество ребер, которые следует добавить в граф, чтобы ответ на пункт в) был утвердительным. Входные данные Во входном файле записано целое число N (1 ≤ N ≤ 100) и список ребер графа, заданных номерами концевых вершин. Выходные данные Ваша программа должна вывести в выходной файл последовательно ответы на пункты a)-д) в следующем формате: в первой строке запишите ответ на пункт а); во второй строке запишите количество ребер из ответа на пункт б), а в последующих строках выдайте сами эти ребра; в следующую строку выведите сообщение «NOT POSSIBLE», если требуемым в пункте в) способом ориентировать граф невозможно, иначе выведите сообщение «POSSIBLE»; далее выведите максимальное количество ребер графа, которые можно ориентировать (пункт г); в последующие строки выведите список этих ребер; в качестве ответа на пункт д) выведите количество ребер, которые следует добавить в исходный граф, а далее выведите сами эти ребра. Ребра задаются указанием номеров своих концевых вершин, а при выводе ответа на пункт г) должна быть указана их ориентация (вначале выводится номер начальной вершины, затем – номер конечной). Если ответ на пункт а) отличен от единицы, то пункты в) и г) решать не следует и ответы на них не выводятся. Баллы за пункт в) в случае утвердительного ответа на него начисляются лишь в том случае, если программа правильным образом ориентировала ребра графа (пункт г). Пример входного файла 4 1 2 2 4 3 4 4 1 Пример выходного файла 1 1 3 4 NOT POSSIBLE 3 1 2 2 4 4 1 1 1 3
Увлекающийся астрономией профессор З. В. Ездочетов занялся изучением
современной карты участка лунной поверхности. Он решил найти на ней
максимально длинную цепочку вложенных друг в друга кратеров. Зная о Ваших
недюжинных способностях в области построения алгоритмов, за помощью в
решении этой непростой задачи он обратился к Вам.
Входные данные: В первой строке входного файла записаны целые числа M и N (1 ≤ M, N ≤ 20). В каждой из последующих M строк содержится описание очередной строки таблицы. Описание состоит из целых чисел и арифметических формул, разделенных символами | (ASCII-код 124). Все числа принадлежат диапазону [-32768, 32767], а длина каждой формулы не превышает 100 символов. Выходные данные: Выведите в выходной файл значения всех ячеек таблицы. Значения ячеек каждой строки таблицы должны быть записаны через пробел в отдельной строке выходного файла. Все значения следует выводить с точностью до двух знаков после десятичной точки. Если значение ячейки вычислить невозможно, вместо него следует вывести символ - (ASCII-код 45). Пример входного файла 2 3 1 | {1, 1 }*10 +3 | -{1,2}/{2,2} {2,3} | 0 | {2,1} Пример выходного файла 1.00 13.00 - - 0.00 -
Страница: 1 [Всего задач: 4] |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|