Задача на графы или словари. Дана база данных туров по городам. Нужно выбрать туры так, чтобы посетить максимальное количество городов

База данных находится в файле формата 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 файле. введите сюда описание изображения

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


Ответы (0 шт):