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