Какими способами можно решить данную задачу?

Обозначим пункты Бишкек - B; Суусамырская Развилка - А; Жалал-Абад - J; Талас - Т; Ош - О; Каракол - К; Балыкчы - L; Нарын - N; Баткен - Е. Расстояние между ними ( по хорошим дорогам, в километрах) следующие : АТ = 102; AJ=377; AB=193;JO=106;OE=240; LB =179;LK=216;LN=180. Скорость автомашины - 60 км.ч. Полное время перелета Ош-Бишкек или Бишкек - Ош - 2 часа. По заданным двум пунктам найти минимальное время передвижения между ними (в минутах).

ВВОД - L O Вывод - 299


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

Автор решения: Калипа Рысбекова

Объяснение:

import heapq

def dijkstra(graph, start, end):

   heap = [(0, start)]

   visited = set()

   while heap:

       (cost, current) = heapq.heappop(heap)

       if current in visited:

           continue

       visited.add(current)

       if current == end:

           return cost

       for neighbor, weight in graph[current].items():

           heapq.heappush(heap, (cost + weight, neighbor))

   return float('inf')

# Расстояния между пунктами

distances = {

   'A': {'T': 102, 'J': 377, 'B': 193},

   'J': {'A': 377, 'O': 106},

   'B': {'A': 193, 'O': 240, 'L': 179},

   'O': {'B': 240, 'J': 106, 'E': 216},

   'K': {'L': 216},

   'L': {'B': 179, 'K': 216, 'N': 180},

   'N': {'L': 180},

   'E': {'O': 216}

}

# Скорость машины в км/ч

speed = 60

# Полное время перелета между Ош и Бишкеком (в часах)

total_time_hours = 2

# Переводим время из часов в минуты

total_time_minutes = total_time_hours * 60

# Запрашиваем ввод пользователя

start_point = input("Введите начальный пункт (латин
→ Ссылка