ФИПИ · ЕГЭ · Информатика · Задание 23
110 заданий открытого банка ФИПИ: впишите ответ, при затруднении — подсказка; после ответа — разбор по шагам.
Задания открытого банка ФИПИ «Задание 23. Алгоритмические задачи с графами» (информатика). Ответ вписывается так же, как в бланк ЕГЭ: число, слово или цифры подряд, без пробелов; если в ответе два числа — через пробел, как в таблице ответа (по строкам).
Неофициальная копия. Условия заданий — из открытого банка заданий ФИПИ (fipi.ru); номер у каждого задания открывает его в банке ФИПИ. Ответы, подсказки, разборы и рисунки подготовлены reknow.ru. Нашли ошибку — нажмите «Сообщить об ошибке» у задания.
Задание 23 ЕГЭ по информатике. Умение решать алгоритмические задачи с графами: оптимальный путь между вершинами, количество путей в ориентированном ациклическом графе. На странице — 110 заданий открытого банка ФИПИ: ответ проверяется сразу, есть подсказка и подробный разбор.
Это несколько заданий из тренажёра, остальные — в тренажёре в начале страницы.
На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К, Л. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.
Какова длина самого протяжённого пути из города А в город Л? Длиной пути считать количество дорог, составляющих этот путь.

roads = 'АБ АВ АГ БД БВ БЕ ГВ ГЖ ВЕ ВЖ ДИ ДЕ ЕИ ЕЛ ЕК ИЛ ЖК КЛ'.split()
def longest(u):
if u == 'Л':
return 0
return max(1 + longest(r[1]) for r in roads if r[0] == u)
print(longest('А')) # 5На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К, Л. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.
Определите количество различных путей ненулевой длины, которые начинаются и заканчиваются в городе Е, не содержат этот город в качестве промежуточного пункта и проходят через промежуточные города не более одного раза.

roads = 'АБ АГ БД ВА ВБ ВД ВГ ДИ ДЕ ДЛ ЕВ ЕЛ ИЛ ЛК КЖ ГЖ ГЕ ЖЕ'.split()
def count(u, seen):
total = 0
for r in roads:
if r[0] == u:
if r[1] == 'Е':
total += 1
elif r[1] not in seen:
total += count(r[1], seen | {r[1]})
return total
print(count('Е', {'Е'})) # 14На рисунке представлена схема дорог, связывающих города А, Б, В, Г, Д, Е, Ж, И, К, Л. По каждой дороге можно двигаться только в одном направлении, указанном стрелкой.
Определите количество различных путей ненулевой длины, которые начинаются и заканчиваются в городе Е, не содержат этот город в качестве промежуточного пункта и проходят через промежуточные города не более одного раза.

roads = 'АБ АГ БД ВА ВБ ВД ВГ ДИ ДЕ ДЛ ЕВ ЕЛ ИЛ ЛК КЖ ГЖ ГЕ ЖЕ ЛЖ'.split()
def count(u, seen):
total = 0
for r in roads:
if r[0] == u:
if r[1] == 'Е':
total += 1
elif r[1] not in seen:
total += count(r[1], seen | {r[1]})
return total
print(count('Е', {'Е'})) # 21Мы используем cookies и сервисы аналитики, чтобы понимать, какие темы нужнее и где сайт работает плохо. Продолжая пользоваться сайтом, вы соглашаетесь с этим. Мы используем cookies. Подробнее