Задача на графы или словари. Дана база данных туров по городам. Нужно выбрать туры так, чтобы посетить максимальное количество городов
База данных находится в файле формата JSON. Я пробую делать задачу через графы, используя библиотеку networkx. Вот такой код я имею на данный момент:
import json
data = open('demo_offers.json', encoding='utf-8')
das = data.read()
data.close()
data_json = json.loads(das)
a = []
b= []
import networkx as nx
DG = nx.DiGraph()
for i in range (0, len(data_json)):
from datetime import datetime
all_info = data_json[i]
d = all_info["periodEnd"]
d1 = all_info["periodStart"]
dtEnd = datetime.strptime(d[:10], "%Y-%m-%d")
dtStart = datetime.strptime(d1[:10], "%Y-%m-%d")
end = str(dtEnd)
start = str(dtStart)
dlina = all_info["route"]
goroda = 0
for i in dlina:
goroda += 1
a = []
a.append(start)
a.append(end)
a.append({'cities':goroda})
a = tuple(a)
b.append(a)
DG = nx.DiGraph(b)
otvet = nx.dag_longest_path(DG, weight='cities')
print(otvet)
и мне выдает следующую ошибку:
networkx.exception.NetworkXUnfeasible: Graph contains a cycle or graph changed during iteration
Изначально граф собирался по циклу for, и увидев такую же ошибку, я подумал: окей, создам его вне цикла for. Создал и выдает ту же ошибку. Почему? Вот один описанный тур в json файле.

Подскажите пожалуйста с решением или может быть проще решить через словари? а не через графы