Модуль: Задачи на пути в графах ( КЕГЭ 2023-13)


1. _St-22_10-kege-13(a)

☰ Теория

1. Предварительная обработка
Создайте текстовый файл, в котором для каждой вершины через пробел занесите смежные вершины с учетом направления.
Для заданной задачи это Файл с компонентами смежности (для создания файла перебрали вершины по строкам)
Можно создать файл с описание ребер Файл с описанием ребер (ориентированных)
2. Обходом графа (используя принцип DFS) считаем пути без повторений из стартовой в стартовую
#z13 программное решение задания 13
# принцип решения DFS
f=open('13_12.txt') # открытие файла с компанентами смежности/ребрами (ориентированными)
sss=f.read().split('\n')# разбиение на строки
f.close() # закрытие файла
N=len(sss) # число записей
XY=dict() # словарь компонент связности
for ss in sss: # пробег по КомпСм
    if len(ss)==0 : continue
    a,b=ss.split() #вершина - смежность
    if a in XY : # проверка наличия в словаре
        XY[a]+=b # добавление в КомпСм
    else : XY[a]=b # создание КомпСм
for a in XY : print(a,XY[a]) #отладочная печать
s='Д' # Стартовая точка (из условия)
Q=[s] #  Начальное заполнение очереди
R=[] # Список путей
while Q: # условие работы - очередь не пустая
    pp=Q.pop() # выбрали последний путь
    x=pp[-1] # последняя вершина в пути
    for i in XY[x]: # пробег по КомпСм - поиск продолжения
        if i==s and len(pp)>1 : R.append(pp+i) # приход в старт при длине >0
        elif i in pp : continue # вершина есть в пути
        else:  Q.append(pp+i) # новое продолжение
print(*R,sep='\n') # отладочная печать - не обязательно
print('===',len(R)) # печать результата
текст программы на языке Python     

    
    
 

На рисунке представлена схема дорог, связывающих пункты
А, Б, В, Г, Д, Е, Ж, И, К, Л, М.
По каждой дороге можно передвигаться только в направлении, указанном стрелкой.
Определите количество различных путей ненулевой длины, которые
начинаются и заканчиваются в пункте Дне содержат этот пункт в
качестве промежуточного и проходят через любой другой пункт не более одного раза.


Ваш ответ Для проверки решения задачи необходимо зарегистрироваться или авторизоваться!

Скрыть/Показать редактор кода (Python) time 1000 ms
  

Выберите правильный ответ, либо введите его в поле ввода

Комментарий учителя