кратчайшие пути

8 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

Авиакомпания <<Флагманский Флот Татарстана>> предлагает в своих самолётах новый вид бизнес-класса. Салон самолёта состоит из \(n\) мест, расположенных в один ряд вдоль прохода. Введём координатную прямую вдоль салона так, что расстояние между креслами будет равно \(1\), и места будут иметь координаты от \(1\) до \(n\).

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

Напитки разлиты по бутылкам, каждая бутылка вмещает \(p\) порций одного напитка. В тележку для напитков можно загрузить не более \(m\) бутылок с любыми видами напитков, гарантируется, что \(m\ge k\).

Пассажиры обслуживаются в порядке возрастания номеров их мест. Первоначально тележка находится в начале салона в точке \(0\), и её можно заполнить любыми видами напитков перед обслуживанием. После завершения обслуживания тележка должна приехать в точку \(n+1\). При этом в точках \(0\) и \(n+1\) могут находиться кладовые: или одна кладовая в одном из концов салона или две кладовые в двух концах, в которых имеется достаточный запас напитков каждого вида. В этих кладовых можно выгрузить из тележки пустые бутылки и погрузить полные бутылки.

По ходу обслуживания напитки будут расходоваться, поэтому время от времени возникает необходимость пополнить запас напитков на тележке в одной из кладовых. Если в текущий момент тележка находится напротив кресла номер \(i\), то для того, чтобы доехать до кладовой в точке \(0\) необходимо проехать расстояние \(i\), а для того, чтобы доехать до кладовой в точке \(n + 1\) необходимо проехать расстояние \(n+1-i\). В кладовых можно выгрузить пустые бутылки из тележки и загрузить на свободные места бутылки с напитками любых видов. Выгружаемые бутылки должны быть пустыми, нельзя выгружать бутылки, в которых остались напитки, или выливать напитки. Нельзя переливать остатки напитков между разными бутылками. Можно загружать на тележку более одной бутылки одного вида. После этого тележка должна проехать расстояние от кладовой до кресла первого необслуженного пассажира, чтобы продолжить обслуживание.

Определите, какое минимальное расстояние должна проехать тележка, чтобы переместиться из точки \(0\) в точку \(n+1\) и обслужить всех пассажиров.

Формат входных данных
Первая строка входных данных содержит четыре целых числа \(n\), \(m\), \(k\), \(p\) (\(3 \leq n \leq 10^6\), \(1 \leq p \leq 10^6\), \(1 \leq k \leq m \leq 10^6\)) — количество мест в салоне, вместимость тележки, количество типов напитков и вместимость каждой бутылки соответственно.

В следующей строке содержится целое число \(c\) (\(1 \leq c \leq 3\)) — параметр, описывающий наличие кладовых в салоне. Если \(c=1\), то кладовая находится только в точке \(n+1\). Если \(c=2\), то кладовая находится только в точке \(0\). Если \(c=3\), то кладовые находятся в обоих концах салона.

В следующей строке содержатся \(n\) целых чисел \(a_i\) (\(1 \leq a_i \leq k\)) — типы напитков, которые заказали пассажиры.

Формат выходных данных
Программа должна вывести одно целое число — минимальное расстояние, которое должна проехать тележка.

Пояснения к примерам
В первом примере в тележку вмещается \(m=2\) бутылки по \(p=1\) порции в каждой. Кладовая находится в конце салона. Первоначально тележку нужно загрузить бутылками с напитками вида \(1\) и \(2\), которые будут налиты пассажирам на местах \(1\) и \(2\), тележка проедет расстояние \(2\) от точки \(0\) до точки \(2\). После этого тележке нужно будет проехать до кладовой в конце салона (расстояние \(4\)), загрузить тележку бутылками вида \(1\) и \(2\) и вернуться к креслу номер \(3\) (тележка проедет расстояние \(3\)). Пассажирам на местах \(3\) и \(4\) выдаются напитки вида \(1\) и \(2\) (тележка проезжает расстояние \(1\) от места \(3\) до места \(4\)). После этого тележке понадобится ещё раз съездить в кладовую (от кресла \(4\) до кладовой расстояние \(2\)), вернуться из кладовой до кресла \(5\) (расстояние \(1\)), и проехать ещё \(1\) до конца салона. Общее расстояние равно \(2+4+3+1+2+1+1=14\).

Во втором примере в тележку вмещаются \(m=3\) бутылки по \(p=2\) порции в каждой. Кладовая находится в начале салона. Необходимо загрузить тележку тремя бутылками вида \(1\), обслужить пассажиров на местах с номерами от \(1\) до \(4\). После этого опустошатся две бутылки вида \(1\), нужно будет сразу съездить в кладовую, чтобы загрузить две бутылки вида \(2\), затем обслужить пассажиров на местах с номерами от \(5\) до \(8\).

В третьем примере в тележку вмещаются \(m=3\) бутылки по \(p=2\) порции в каждой, кладовые находятся в обоих концах салона. Для обслуживания пассажиров нужны две бутылки вида \(2\) и по одной бутылке видов \(1\) и \(3\), поэтому понадобится один раз съездить в кладовую для того, чтобы заменить пустую бутылку вида \(2\) на полную. Это лучше сделать после обслуживания пассажира на месте \(3\), тележка должна съездить в кладовую в начале салона.

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

В пятом примере понадобится два пополнения тележки, один раз тележке придётся вернуться в кладовую в начало салона после обслуживания пассажира \(3\), второй раз — в конец салона после обслуживания пассажира \(6\).

Дан связный неориентированный граф из \(n\) вершин. Изначально в \(i\)-й вершине (\(1 \leq i \leq n\)) записано целое положительное число \(a_i\). Боб хочет за минимальное время попасть из вершины с номером \(1\) в вершину с номером \(n\). Время, которое требуется, чтобы пройти по ребру, соединяющему вершины \(u\) и \(v\), составляет \(|a_u - a_v|\).

Перед тем, как начать обход, Боб может поменять значение \(a_i\) в не более чем \(k\) вершинах. За какое минимальное время можно попасть из \(1\) в \(n\), поменяв значения оптимальным образом?

Формат входных данных
В первой строке входных данных записаны три целых числа \(n, m, k\) (\(2 \leq n \leq 2000, 1 \leq m \leq 2000, 0 \leq k \leq 10\)) — количество вершин графа, количество ребер и параметр \(k\) соответственно.

В следующей строке содержится \(n\) целых чисел \(a_i\) (\(0 \leq a_i \leq 10^9\)) — начальные значения в вершинах.

В следующих \(m\) строках содержатся пары чисел \(u_i, v_i\) (\(1 \leq u_i, v_i \leq n\)) — вершины, соединенные \(i\)-м ребром. Гарантируется, что граф связный, в нем нет петель и кратных ребер.

Формат выходных данных
В единственной строке выходных данных выведите ответ на задачу.

Примечание

В первом тестовом примере одним из оптимальных способов получения ответа может быть изменение значения в вершине с номером \(2\) с числа \(15\) на число \(3\). В таком случае путь \(1 \rightarrow 2 \rightarrow 5 \rightarrow 6\) будет иметь стоимость \(|1 - 3| + |3 - 4| + |4 - 10| = 9\).

Второй пример отличается от первого лишь значением \(k\). Во втором примере можно поменять значения записанные в вершинах с номерами \(2, 3, 6\) на \(1\). Тогда стоимостью пути станет \(|1 - 1| + |1 - 1| + |1 - 1| + |1 - 1| = 0\).

33228#33228
В одной из деревень Центрального района решили построить новую школу, но никак не могут выбрать, в какой именно. Решили сделать так: подсчитать для каждой деревни суммарное расстояние, которое будут проходить все школьники Центрального района, если школа будет построена в этой деревне, и выбрать место, для которого эта сумма будет минимальной. В распоряжении администрации есть карта дорог Центрального района. Напишите программу, которая поможет выбрать место для школы. Если какой-то населенный пункт не имеет связи с другим населенным пунктом, где предполагается разместить школу, считайте, что доставка каждого ученика вертолётом "стоит" 10000 единиц расстояния.
 
Входные данные
В первой строке вводится количество деревень N ( 1 ≤ N ≤ 100 ). В следующих N строках записано по N чисел, разделённых пробелами – элементы весовой матрицы графа, который описывает схему дорог: положительное число означает расстояние между деревнями, ноль говорит о том, что дороги нет. В последней строке вводится N чисел - количество школьников в каждой деревне.
 
Выходные данные
Программа должна вывести два числа: сначала номер деревни, где нужно построить школу, а затем (через пробел) – общее расстояние, которое будут проходить все школьники Центрального района, если школа будет построена в этой деревне.

Ввод Вывод
4
0 11 8 4
11 0 2 5
8 2 0 13
4 5 13 0
15 26 30 12
2 255

Профессору Форду необходимо попасть на международную конференцию. Он хочет потратить на дорогу наименьшее количество денег, поэтому решил, что будет путешествовать исключительно ночными авиарейсами (чтобы не тратиться на ночевку в отелях), а днем будет осматривать достопримечательности тех городов, через которые он будет проезжать транзитом. Он внимательно изучил расписание авиаперелетов и составил набор подходящих авиарейсов, выяснив, что перелеты на выбранных направлениях совершаются каждую ночь и за одну ночь он не сможет совершить два перелета.
 
Теперь профессор хочет найти путь наименьшей стоимости, учитывая что до конференции осталось K ночей (то есть профессор может совершить не более K перелетов).
 
Входные данные
В первой строке находятся числа N (количество городов), M (количество авиарейсов), K (количество оставшихся ночей), S (номер города, в котором живет профессор), F (номер города, в котором проводится конференция).
 
Ограничения: 2≤N≤100, 1≤M≤105, 1≤K≤100, 1≤S≤N, 1≤F≤N.
 
Далее идет M строк, задающих расписание авиарейсов. i-я строка содержит три натуральных числа: Si, Fi и Pi, где Si - номер города, из которого вылетает i-й рейс, Fi - номер го-рода, в который прилетает i-й рейс, Pi - стоимость перелета i-м рейсом. 1≤Si≤N, 1≤Fi≤N, 1≤Pi≤106.
 
Выходные данные
Выведите одно число - минимальную стоимость пути, подходящего для профессора. Если профессор не сможет за K ночей добраться до конференции, выведите число -1.

Ввод Вывод
4 5 2 1 4
1 2 1
2 3 1
3 4 1
1 3 3 
1 4 5
4

Группа Pink Floyd собирается дать новый концертный тур по всему миру. По предыдущему опыту группа знает, что солист Роджер Уотерс постоянно нервничает при перелетах. На некоторых маршрутах он теряет вес от волнения, а на других - много ест и набирает вес.
 
Известно, что чем больше весит Роджер, тем лучше выступает группа, поэтому требуется спланировать перелеты так, чтобы вес Роджера на каждом концерте был максимально возможным. Группа должна посещать города в том же порядке, в котором она дает концерты. При этом между концертами группа может посещать промежуточные города.
 
Входные данные
Первая строка входного файла содержит три натуральных числа n, m и k - количество городов в мире, количество рейсов и количество концертов, которые должна дать группа соответственно (n≤100, m≤104, 2≤k≤104). Города пронумерованы числами от 1 до n. Следующие m строк содержат описание рейсов, по одному на строке. Рейс номер i описывается тремя числами bi, ei и wi - номер начального и конечного города рейса и предполагаемое изменение веса Роджера в миллиграммах (1≤bi,ei≤n, −105≤wi≤105). Последняя строка содержит числа a1, a2, ..., ak - номера городов, в которых проводятся концерты. В начале концертного тура группа находится в городе a1.Гарантируется, что группа может дать все концерты.
 
Выходные данные
Первая строка выходного файла должна содержать число s - количество рейсов, которые должна сделать группа. Вторая строка должна содержать s чисел - номера используемых рейсов. Если существует такая последовательность маршрутов между концертами, что Роджер будет набирать вес неограниченно, то первая строка выходного файла должна содержать строку “infinitely kind”.

Ввод Вывод
4 8 5
1 2 -2
2 3 3
3 4 -5
4 1 3
1 3 2
3 1 -2
3 2 -3
2 4 -10
1 3 1 2 4
6
5 6 5 7 2 3 
4 8 5
1 2 -2
2 3 3
3 4 -5
4 1 3
1 3 2
3 1 -2
3 2 -3
2 4 10
1 3 1 2 4
infinitely kind

 

Сегодня у студентов праздник! В одном из новых зданий университета решили открыть столовую. Для этих целей требуется выбрать одно из зданий, в котором и будет располагаться столовая. Чтобы студенты как можно меньше отвлекались от учёбы, было решено выбрать такое здание, чтобы максимальное расстояние от него до всех остальных зданий было как можно меньше.
 
Помогите найти такое здание!
 
Входные данные
В первой строке находятся два числе N и M - количество зданий и количество дорог, соединяющих здания (1<=N<=100, 0 <=M<=(N(N−1))/2. Далее в M строках расположены описания дорог: 3 целых числа si, ei, li - здания, в которых начинается и заканчивается дорога и длина дороги соответственно (1<=si, ei<=N, 0<=li,=100, дороги двунаправленные).
 
Выходные данные
Необходимо вывести одно число - номер искомого здания. Если есть несколько зданий удовлетворяющих поставленным критериям, выберите среди них здание с наименьшим номером.

Ввод Вывод
3 2
1 2 1
2 3 2
2
3 1
1 2 10
1

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

Расстояние между двумя соседними станциями на одной радиальной линии равно 1 км. Расстояние между соседними станциями на кольцевой линии с номером i составляет i км. Любая станция обозначается парой чисел - номером радиальной линии r (\(1<=r<=6\)) и номером кольцевой линии k (\(0<=k<=32000\)), на пересечении которых она находится. 

Напишите программу, определяющую длину кратчайшего пути между станциями.

 

Входные данные: Вводятся четыре числа: r1, k1, r2, k2 - координаты начальной и конечной станции. 

Выходные данные: Необходимо вывести расстояние (в км), которое потребуется проехать пассажиру, чтобы попасть c начальной станции на конечную.


Примеры
Входные данные Выходные данные
1 1 5 1 4 1
2 1 5 2 4 5
3 2 0 6 3 3

 
1260#1260

 На схеме нарисованы дороги между четырьмя населенными пунктами A, B, C, D и указаны протяженности данных дорог.

Определите, какие два пункта наиболее удалены друг от друга (при условии,что передвигаться можно только по указанным на схеме дорогам). В ответе укажите кратчайшее расстояние между этими пунктами.
1) 9     2) 13     3) 15     4) 17
Поделиться
Класснуть