Задание 4. Информатика. ОГЭ. Ушаков 2025-4

Просмотры: 14
Изменено: 1 февраля 2025

Между населёнными пунктами \(A, \, B, \, C, \, D, \, E, \, F\) построены дороги, протяжённость которых (в километрах) приведена в таблице.

ABCDEF
A 381318
B3 12410
C12 933
D849 411
E131034 8
F183118 

Определите длину кратчайшего пути между пунктами \(A\) и \(F.\) Передвигаться можно только по дорогам, протяжённость которых указана в таблице, два раза посещать один пункт нельзя.

Решение:

Python


def dfs(graph, beg, end, vis = [], cur = 0):
    vis += [beg]
    if beg == end:
        return cur
    min_len = 10**10
    for town, dist in graph[beg]:
        if town not in vis:
            min_len = min(min_len, dfs(graph, town, end, vis + [town], cur + dist))
    return min_len


W = ((0, 3, 0, 8, 13, 18),
     (3, 0, 12, 4, 10, 0),
     (0, 12, 0, 9, 3, 3),
     (8, 4, 9, 0, 4, 11),
     (13, 10, 3, 4, 0, 8),
     (18, 0, 3, 11, 8, 0))

towns = 'ABCDEF'

G = {towns[i]: [(towns[j], v) for j, v in enumerate(W[i]) if v] for i in range(6)}

print(dfs(G, 'A', 'F'))

Ответ: \(17\)