Страница: << 44 45 46 47 48 49 50 >> Отображать по:
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

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

Кассы занумерованы от \(1\) до \(L\). При поступлении нового вызова, один из инженеров едет к этой кассе из своего текущего положения (или остается там же, если он к тому моменту был в этой кассе). В одной кассе может находиться только один инженер. Вызовы должны обслуживаться в том порядке, в котором они поступают. В каждый момент времени перемещаться может только один инженер. Перемещаться инженеры могут только при вызове и только к той кассе, в которую их вызывают в данный момент. Изначально инженеры находятся в кассах 1, 2 и 3 соответственно. Перемещение инженера из кассы \(p\) в кассу \(q\) стоит \(C(p, q)\) рублей. При этом стоимость проезда из \(p\) в \(q\) и обратно может различаться. Также инженер может совершенно бесплатно оставаться в той же кассе (т.е. \(C(p, p) = 0\)). Цель компании – снизить расходы на обслуживание вызовов. Кроме этого требуется по известной последовательности вызовов определить для каждого из них, каким инженером этот вызов будет обслужен.

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

В первой строке содержаться два числа \(L\) и \(N\) (\(3 \leq L \leq 200\), \(1 \leq N \leq 1000\)) – количество касс и вызовов соответственно. В каждой из следующих \(L\) строк записано по \(L\) целых неотрицательных чисел. Число, стоящее в строке \(p+1\) входного файла и столбце \(q\), задает \(C(p, q)\). Стоимость проезда между двумя кассами – целое неотрицательное число, не превышающее 2000. После этого задано \(N\) чисел – номера касс в той последовательности, в которой происходили вызовы.

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

Выведите в первой строке минимальную суммарную стоимость переездов. Во второй строке для каждого вызова выведите, каким инженером он будет обслужен.

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

В селе Максоярославке коровы обычно пасутся на лужайках, соединенных дорожками, на каждой лужайке пасется хотя бы одна корова. При этом для каждой пары лужаек есть ровно один способ пройти от одной лужайки до другой. По каждой дорожке можно двигаться в обоих направлениях. Считается, что все дорожки имеют одинаковую длину.
Главный фермер села хочет построить на лужайках \(k\) коровников для своих коров. Ясно, что каждая корова вечером будет возвращаться именно в тот коровник, который ближе к ее лужайке (если расстояние до коровников одинаково, то в любой из них). Поэтому возникает задача определения такого расположения коровников, при котором наибольшее из расстояний, проходимых коровами, было бы минимально.

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

В первой строке входного файла содержатся два числа \(n\) и \(k\) (\(2 \le n \le 50\;000\), \(1 \le k \le n\)) --- количество лужаек и планируемое число коровников, соответственно. Следующие \(n - 1\) строк содержат описания дорожек. Каждая дорожка задается парой целых положительных чисел (\(a, \, b\)), где \(a\) и \(b\) --- номера лужаек, которые соединяет данная дорожка. Лужайки нумеруются с единицы.

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

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

Примеры
Входные данные
7 2
5 4
4 3
1 3
2 3
4 6
6 7
Выходные данные
2
1 4 
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes
Точки сочленения + динамика по дереву

Петя работает в межгалактическом агентстве путешествий. Он часто получает запросы на поиск пути между двумя планетами по доступным межпланетным дорогам. Петя уже сделал по этому поводу целый ряд наблюдений, и сейчас его интересует следующее. Для каждой планеты \(А\) он хочет знать количество пар планет \(В\) и \(С\), таких что любой путь от планеты \(В\) к планете \(С\) проходит через планету \(А\).

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

Первая строка входного файла содержит два числа \(2 \leq N \leq 20000\) и \(1 \leq M \leq 200000\) – число планет и число дорог соответственно. Далее в \(M\) строках следуют описания дорог. По дорогам можно двигаться в обе стороны. Каждая дорога описывается номерами планет, которые она соединяет. Гарантируется, что от любой планеты можно добраться до любой другой.

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

В выходной файл выведите \(N\) чисел – для каждой планеты \(А\) выведите количество пар различных планет, таких что любой путь от одной до другой содержит \(А\).

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

Страница: << 44 45 46 47 48 49 50 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест