Задача №1737. Заправки
Разбор добавил Виталий Павленко
Сделаем из входных данных неориентированный взвешенный граф на N вершинах. Зададим его матрицей смежности, в которой отсутствие ребра помечаем \(+\infty\). Сначала закинем в него такие веса — вес ребра из i в j равен стоимости бака в i-м городе. С учётом дополнительного бака, добавим некоторые рёбра в граф (или снизим веса части старых рёбер). А именно — если есть рёбра из i в j и из j в k, то вес ребра из i в k есть минимум из его текущего веса и стоимости наполнения бака и канистры в i-м городе. Для полноты картины надо добавить такие рёбра (или снизить их веса): если есть ребро из i в j, из j в k и из k в p, то вес ребра из i в p есть минимум из его текущего веса, стоимости наполнения бака и канистры в i-м городе и стоимости бака в j-м городе. Теперь можно найти кратчайшее расстояние от первой вершины до N-ной алгоритмом Флойда. (Казалось бы, при добавлении рёбер третьего типа мы получаем сложность \(O(n^4)\). Однако, максимальное время работы моего решения, написанного на dcc, на текущих тестах — 0.720 секунды.)Сдать: для сдачи задач необходимо войти в систему
82
statement