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


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     

    
    
 

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация