# Все графы включены в словарь,
# т.е. обработка множества графов.
def check_graph(graph): #обработка каждого графа-маршрута
qty = 0 # Количество точек между заданными пользователем точками
if first_p in graph:
if second_p in graph:
f = 0 # Где находится первая
while first_p != graph[f]: # определяем
f += 1
s = 0 # Где находится вторая точка
while second_p != graph[s]:
s += 1
if f < s: # Если первая точка встречается раньше, чем вторая:
qty = s - f # количество точек от первой до второй
while f <= s: # вывод точек
print(points[graph[f]],end=' ')
f += 1
else: # Если вторая точка встречается раньше, чем первая
qty = f - s
while s <= f:
print(points[graph[f]],end=' ')
f -= 1
return qty # Количество точек от первой до второй
# точки
points = {'a':[10,20], 'b':[30,15], 'c':[60,10], 'd':[80,25], 'e':[50,40]}
print('Existing points: ',end='')
for i in points:
print(i,end=' ')
print()
# графы-маршруты в словаре
graphs = {'325':['a','d','e','c'], '30':['e','a','b','c','d'],\
'342':['e','c','a']}
print()
# ввод пользователя
first_p = input('First point: ')
second_p = input('Second point: ')
print()
# точки должны быть различны
if first_p == second_p:
print('You typed the same!')
# вызов функции в цикле, нахождение кратчайшего пути
qty_points = 100
for i in graphs:
print('Path',i,': ',end='') # i - это ключ, т.е. название графа
q = check_graph(graphs[i])
if q != 0 and q < qty_points:
qty_points = q
min_graph = i
print()
print('The shortest path:',min_graph)
Подписаться
авторизуйтесь
0 Комментарий