На рисунке справа схема дорог Н-ского района изображена в виде графа, в таблице содержатся сведения о длинах этих дорог (в километрах). Так как таблицу и схему рисовали независимо друг от друга, то нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе.
| П1 | П2 | П3 | П4 | П5 | П6 | П7 | П8 | |
| П1 | 26 | 13 | ||||||
| П2 | 26 | 20 | 30 | 19 | 25 | 11 | ||
| П3 | 20 | 15 | ||||||
| П4 | 30 | 16 | 12 | |||||
| П5 | 16 | 28 | ||||||
| П6 | 13 | 19 | 14 | |||||
| П7 | 25 | 15 | 12 | |||||
| П8 | 11 | 28 | 14 |
Определите сумму протяженностей дорог пункта A в пункт Г и из пункта Г в пункт И, если известно, что длина дороги ВЕ меньше, чем длина дороги ДИ. В ответе запишите целое число.
Сопоставим населённые пункты графа и населённые пункты в таблице. Из Г ведут шесть дорог. Таким образом, Г — П2. Тогда Ж это пункт П5, так как это единственный пункт степени 2 не связанный с пунктом Г. Тогда пункты Е и И могут быть пунктами П4 или П8. А населенные пункты В и Д могут быть пунктами П7 и П6. Длинна дороги П8–П6 равна 14, а длина дороги П4–П7 равна 12. Так как дорога ВЕ меньше, чем длина дороги ДИ, то П6–П8 это дорога ДИ (Д населенный пункт П6, а И населенный пункт П8), а П4–П7 дорога ВЕ (Е населенный пункт П4, а В населенный пункт П7). Тогда населенный пункт А это П3, а Б это пункт П1. Дорога А–Г это дорога П3–П2 длиною 20, дорога Г–И это П2-П8 длиною 11. Сумма протяженностей дорог пункта A в пункт Г и из пункта Г в пункт И равна 20 + 11 = 31.
Ответ: 31.
Приведём решение на языке Python.
from itertools import permutations as p
sort = lambda x: dict([k,''.join(sorted(v))] for k, v in sorted(x.items()))
y = lambda x, c: {c[k]: ''.join(map(lambda d: c[d], v)) for k, v in x.items()}
sln = {'1': '26', '2': '134678', '3': '27', '4': '257', '5': '48', '6': '128',\
'7': '234', '8': '256'}
slb = sort({'А': 'ВГ', 'Б': 'ГД', 'Г': 'АБДИЕВ', 'Д': 'БГИ', 'И': 'ДГЖ',\
'Ж': 'ЕИ', 'Е': 'ВГЖ', 'В': 'АГЕ'})
print(*[sort(c) for i in p('12345678') if (c:={k: v for k, v in zip(i,'АБГДИЖЕВ')}) and sort(y(sln,c))==slb])
# {'1': 'Б', '2': 'Г', '3': 'А', '4': 'Е', '5': 'Ж', '6': 'Д', '7': 'В', '8': 'И'} - этот вариант подходит по условию
# А -> Г + Г -> И (А - 3, Г - 2, И - 8)
# 20 + 11 = 31
# Ответ: 31
Приведём решение Александра Козлова на языке Python.
from itertools import permutations
t = '26 134678 27 257 48 128 234 256'.split()
g = 'АВ ВГ ГА ГБ БД ДГ ДИ ГИ ИЖ ЖЕ ЕГ ЕВ'.split()
print( *range(1,9) )
for p in permutations('АБВГДЕЖИ'):
if all( str(p.index(b)+1) in t[p.index(a)] for a, b in tuple(g) ):
print( *p )
результат
1 2 3 4 5 6 7 8
А Г Б И Ж В Д Е
Б Г А Е Ж Д В И
# для интерпретации результата берем первую и последнюю строки результата
1 2 3 4 5 6 7 8
Б Г А Е Ж Д В И
# поскольку по условию ВЕ или 74 = 12 должно быть меньше ДИ или 68 = 14 : 12 < 14
# откуда следует: АГ или 32 = 20 и ГИ или 28 = 11: АГ + ГИ = 31

