Задания
Версия для печати и копирования в MS Word
Тип 1 № 46959
i

На ри­сун­ке схема дорог изоб­ра­же­на в виде графа, в таб­ли­це со­дер­жат­ся све­де­ния о длине этих дорог в ки­ло­мет­рах. Так как таб­ли­цу и схему ри­со­ва­ли не­за­ви­си­мо друг от друга, ну­ме­ра­ция населённых пунк­тов в таб­ли­це никак не свя­за­на с бук­вен­ны­ми обо­зна­че­ни­я­ми на графе. Кроме того, при по­стро­е­нии графа одну до­ро­гу слу­чай­но про­пу­сти­ли. Опре­де­ли­те длину этой про­пу­щен­ной до­ро­ги. В от­ве­те за­пи­ши­те целое число  — длину до­ро­ги в ки­ло­мет­рах.

 

П1П2П3П4П5П6П7П8
П1162015
П2222421
П31614
П422231918
П5202426
П6212326
П7151917
П8141817

Спрятать решение

Ре­ше­ние.

За­ме­тим, что в таб­ли­це име­ет­ся один пункт сте­пе­ни 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(та­б­транс))) # не­до­ста­ю­щая в графе дуга


Аналоги к заданию № 46959: 46998 Все

Раздел кодификатора ФИПИ: 1.3.1 Опи­са­ние ре­аль­но­го объ­ек­та и про­цес­са