Найдите минимальную длину пути из вершины с номером 1 в вершину с номером 100 среди всех путей с длинами от 18000 до 22000 (включительно). Гарантируется, что хотя бы один такой маршрут существует. Запишите в ответе целую часть найденной длины.
Поэтому берём надёжную архитектуру: чёткие условия, настоящая бесконечность, никакой двойной арифметики.
✅ Готовый код — можно копировать на практику:
from collections import defaultdict
from functools import lru_cache
graf = defaultdict(list)
with open("23.txt") as f:
for line in f:
st, end, dl = line.split()
graf[int(end)].append((int(st), float(dl)))
@lru_cache(maxsize=None)
def dlina(x, sm):
if x == 1:
return 0.0 if 18000 <= sm <= 22000 else float('inf')
mn = float('inf')
for prev, w in graf[x]:
res = dlina(prev, sm + w)
if res != float('inf'):
mn = min(mn, res + w)
return mn
print(int(dlina(100, 0.0)))
#егэинформатика #задание23 #графы_егэ #алгоритмы_егэ #python_для_егэ #разбор_задания23 #айти #хрупкие_решения #подготовка_к_егэ