ЗАДАЧИ
problems.ru
О проекте | Об авторах | Справочник
Каталог по темам | по источникам | Поиск |
К задаче N

Проект МЦНМО
при участии
школы 57
Задача 102891
Темы:    [ Построение перечислителя ]
[ Кратчайшие пути в графах ]
Сложность: 3+
Классы:
Название задачи: Катаем кубик .
В корзину
Прислать комментарий

Условие

На шахматной доске стоит кубик, занимая своим основанием в точности одно из полей доски. На его гранях написаны неотрицательные целые числа, не превосходящие 1000. Кубик можно перемещать на смежные поля, перекатывая через соответствующее ребро в основании. При движении кубика вычисляется сумма чисел, попавших в его основание (каждое число считается столько раз, сколько раз кубик оказывался лежащим на данной грани).

Требуется найти такой путь движения кубика между двумя заданными полями доски, при котором вычисленная сумма будет минимальной. Числа, стоящие в основании кубика в начальной и конечной позициях, также входят в сумму.

Входные данные
Во входном файле через пробел записаны координаты начального и конечного полей и 6 чисел, написанных на передней (в начальный момент), задней, верхней, правой, нижней и левой гранях кубика соответственно. Координаты полей указываются в стандартной шахматной нотации (см. пример). Начальное и конечное поля различны.

Выходные данные

Выведите в выходной файл минимально возможную сумму и соответствующий ей путь. Путь должен быть задан последовательным перечислением координат полей, по которым движется кубик (включая начальное и конечное поля). Координаты полей записываются в том же формате, что и во входных данных, и разделяются пробелом.

Пример входного файла

e2 e3 0 8 1 2 1 1

Пример выходного файла

5 e2 d2 d1 e1 e2 e3

Решение

Скачать архив тестов и решений

Состояние кубика на доске определяется полем, на котором стоит кубик, и номерами граней, служащих ему в данный момент основанием и передней (ближней к нам) гранью. Построим граф, вершины которого будут соответствовать возможным состояниям кубика, а ребра – допустимым переходам между ними (эти переходы определяются перекатыванием кубика через одно из ребер в основании). Каждому ребру (a, b) полученного графа припишем вес, равный числу, находящемуся на основании кубика в состоянии a. Теперь можно воспользоваться алгоритмом Дейкстры [Липский 88, п. 3.3] для нахождения кратчайших путей из начальной вершины в вершины, соответствующие расположению кубика на конечном поле.

Источники и прецеденты использования

книга
предмет информатика
Автор Беров В., Лапунов А., Матюхин В., Пономарев А.
Название Особенности национальных задач по информатике
Издательство Триада-С
Год издания 2000
глава
Номер 3
Название Алгоритмы на графах
Задача
Номер 8

© 2004-... МЦНМО (о копирайте)
Пишите нам

Проект осуществляется при поддержке Департамента образования г.Москвы и ФЦП "Кадры" .