Форум сайта python.su
Добрый вечер, есть код, но его надо доработать. Не понимаю как и что. Задание:
строка ввода # 1: n - целое число, показывающее, сколько путей у нас будет на графике
строка ввода № 2: первые две соединенные вершины
строка ввода № 3: еще две соединенные вершины
…
строка ввода # n + 1: последние подключенные вершины
строка ввода # n + 2: вершина, чтобы начать и закончить движение
Программа выводит кратчайший путь. Если существует более 1 пути одинакового размера, проргам выводится по алфавиту больше. Например, если возможными путями являются A B D и A C D, берется первый (A B D)
graph = {'A': , ‘B’: , ‘C’: , ‘D’: , ‘E’: , ‘F’: , ‘J’:, ‘G’:, ‘H’:,'I':}
def find_shortest_path(graph, start, end, path:
path = path +
if start == end:
return path
if not start in graph:
return None
shortest = None
for node in graph:
if node not in path:
newpath = find_shortest_path(graph, node, end, path)
if newpath:
if not shortest or len(newpath) < len(shortest):
shortest = newpath
return shortest
Пример:
input:
8
A B
A C
B C
B D
C D
D C
E F
F C
A D
output:
A B D
Офлайн