Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Информатика, решение задачи

гбпа шдр Ученик (131), на голосовании 4 дня назад
Голосование за лучший ответ
Александр Печенкин Мастер (1785) 1 месяц назад
Из А мы можем попасть только в В. Из В мы можем попасть в С, в D и в E. Если мы попадем сразу в Е, то длина пути будет равна 3+6=9. Если мы попадем в D, а потом в Е, то длина пути будет 3+2+3=8. А если мы попадём сначала в С, а потом в Е, то длина пути будет 3+3+1=7. Это кратчайший путь. Итого, ответ 7
baxbax777 Мастер (2227) 1 месяц назад
алгоритм Дейкстры как-бы... ответ: 7
 import heapq 
def dijkstra(g, s, e):
d, q = {v: float('inf') for v in g}, [(0, s)]
d[s] = 0
while q:
dist, v = heapq.heappop(q)
if v == e: return dist
if dist > d[v]: continue
for n, w in g[v].items():
if (nd := dist + w) < d[n]:
d[n] = nd
heapq.heappush(q, (nd, n))
return d[e]
g = {'A': {'B': 3}, 'B': {'A': 3, 'C': 1, 'D': 2, 'E': 6}, 'C': {'B': 1, 'D': 3, 'E': 3}, 'D': {'B': 2, 'C': 3, 'E': 3}, 'E': {'B': 6, 'C': 3, 'D': 3}}
print(dijkstra(g, 'A', 'E'))
Похожие вопросы