ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1031. Железнодорожные билеты

Самое понятное для меня решение.
Послано Mahilewets 21 июл 2017 11:35
Можно считать,  что мы имеем ориентированный взвешенный граф,  у которого максимальная степень вершины равна трём .

Равна она трём потому,  что нам всегда выгодно ехать как можно дальше,  потому что мы заплатили за всю дистанцию.

То есть из какой-то станции ребра с весами C1,  C2 и C3 проводим в как можно более далёкие станции.

Тогда это получается очень сильно разреженный граф,  так как N<=1e4.

На этом графе запускаем алгоритм Дейкстры для разреженных графов.

Я использовал вариант за O(Nlog2N)  с std :: set.

Для расчёта того,  куда проводить ребра,  я использовал бинарный поиск.  И немного запорол реализацию этого поиска.

Мой поиск возвращал первую станцию, которая находится дальше,  чем разрешено.  И  возвращал  он некорректное значение,  если не было такой станции.

Это послужило причиной WA#6.

Причиной WA#2 послужило то,  что я забыл сделать обновление расстояния до пункта назначения.  Так как ребра идут жадно,  то пункт назначения проезжался и в очередь не попадал,  и расстояние соответственно никогда не обновлялось.