Тип 1 № 46959 

Анализ информационных моделей. Неоднозначное соотнесение таблицы и графа
i
На рисунке схема дорог изображена в виде графа, в таблице содержатся сведения о длине этих дорог в километрах. Так как таблицу и схему рисовали независимо друг от друга, нумерация населённых пунктов в таблице никак не связана с буквенными обозначениями на графе. Кроме того, при построении графа одну дорогу случайно пропустили. Определите длину этой пропущенной дороги. В ответе запишите целое число — длину дороги в километрах.
| П1 | П2 | П3 | П4 | П5 | П6 | П7 | П8 |
| П1 | | | 16 | | 20 | | 15 | |
| П2 | | | | 22 | 24 | 21 | | |
| П3 | 16 | | | | | | | 14 |
| П4 | | 22 | | | | 23 | 19 | 18 |
| П5 | 20 | 24 | | | | 26 | | |
| П6 | | 21 | | 23 | 26 | | | |
| П7 | 15 | | | 19 | | | | 17 |
| П8 | | | 14 | 18 | | | 17 | |
Решение. Заметим, что в таблице имеется один пункт степени 2, шесть пунктов степени 3 и один пункт степени 4, а в графе имеется две вершины степени 2 и шесть вершин степени 3. Значит, на графике пропущена дорога из одной из вершин степени 3 в одну из вершин степени 2.
Вершины Д и И — единственные вершины степени 2. Одна из этих вершин имеет пропущенную дорогу. Вершины В и Ж — единственные вершины степени 3, связанные и с вершиной Д, и с вершиной И. Следовательно, вершины Д и И могут соответствовать П3 и П7, поскольку только П7 связан с теми же пунктами, что и П3. Отсюда можно заключить, что в графе не отмечена дорога П4–П7, длина которой равна 19. Это и есть ответ.
Ответ: 19.
Приведём решение Юрия Красильникова на языке Python.
def алфавит(s): return ''.join(sorted(set(s.replace(' ',''))))
# алфавит - строка из символов строки s в алфавитном порядке (кроме пробела)
def дуги(s): return set(map(алфавит,s.split()))
# дуги - множество дуг графа (пар символов), каждая пара упорядочена по алфавиту
таблица = '13 15 17 24 25 26 38 46 47 48 56 78' # дуги по таблице
граф = 'АБ АГ АЕ БВ БГ ВД ВИ ГЕ ДЖ ЕЖ ЖИ' # дуги по схеме
# Не надо бояться включить одну дугу дважды (напр., БД и ДБ). Главное - ничего не пропустить.
print(алфавит(таблица)) # заголовок
from itertools import permutations
for p in permutations(алфавит(граф)): # все возможные перестановки буквенных обозначений
табтранс = str.maketrans(''.join(p),алфавит(таблица)) # таблица трансляции
if дуги(таблица) >= дуги(граф.translate(табтранс)): # если все дуги графа содержатся в таблице
print(''.join(p))
print(дуги(таблица) - дуги(граф.translate(табтранс))) # недостающая в графе дуга
Ответ: 19