Задание 23

Графы и пути

Типов: 2

01

Как распознать

Файл содержит ориентированные рёбра L M W с положительным весом.

02

Условие

Найти целую часть кратчайшего пути из вершины 1 в 100.

03

Разбор

Многократно ослабляй расстояния по всем рёбрам ациклического графа.

04

Шаблон

template.py
file = open('demo_23.txt')
data = []
for line in file:
    a, b, l = line.split()
    data.append([int(a), int(b), float(l)])

dist = [float('inf')] * 1001
dist[1] = 0
for i in range(len(data)):
    for a, b, l in data:
        dist[b] = min(dist[b], dist[a] + l)
print(int(dist[100]))
01

Как распознать

Ориентированный ациклический взвешенный граф.

02

Условие

По файлу 23.txt найти целую часть кратчайшего пути из 3 в 97.

03

Разбор

Используй тот же многократный проход по рёбрам.

04

Шаблон

template.py
file = open('23.txt')
data = []
for line in file:
    a, b, l = line.split()
    data.append([int(a), int(b), float(l)])
dist = [float('inf')] * 1001
dist[3] = 0
for i in range(len(data)):
    for a, b, l in data:
        dist[b] = min(dist[b], dist[a] + l)
print(int(dist[97]))