---> 6 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: 1 2 >> Отображать по:
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

Как вы знаете, Васин брат живет во Флатландии. Во Флатландии n городов, соединенных n - 1 двухсторонней дорогой. Города пронумерованы от 1 до n . Из любого города можно добраться до любого другого.

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

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

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

В первой строке записано целое число n (2 ≤ n ≤ 100 000) , где n количество городов в стране. Далее в n - 1 строке записаны сами дороги. Каждая строка содержит пару номеров соединяемых дорогами a i , b i (1 ≤ a i , b i n )

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

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

Примеры
Входные данные
4
1 2
2 3
3 4
Выходные данные
1
Входные данные
7
1 2
1 3
1 4
1 5
1 6
1 7
Выходные данные
0
Входные данные
6
1 2
2 3
2 4
5 4
6 4
Выходные данные
4
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Много в мире разных часовых поясов! Именно поэтому соревнования по программированию часто бывают в неудобное для некоторых людей время. Как-то раз Гриша и Егор решили поучавствовать в соревновании, которое заканчивалось очень поздно. Именно поэтому ребята решили переночевать в гостинице, чтобы не возвращаться домой поздно. Однако все не так просто. Родители Егора и Гриши очень волнуются за своих детей, поэтому они решили установить по всему городу камеры, чтобы видеть, где находятся ребята.

В городе, где живут программисты 1 ≤ n ≤ 500 000 перекрестков, соединенных n - 1 дорогой так, что между любыми двумя перекрестками существует путь по дорогам.

Родители собираются установить на перекрестках города камеры, радиус действия которых равен длине дороги. Родители будут спокойны, если смогут видеть ребят на любой дороге и на любом про перекрестке. Иными словами, для каждого перекрестка должен существовать перекресток, находящийся на расстоянии не более одной дороги, такой что на нем установлена камера и для любой дороги должна быть установлена камера хотя бы на одном конце этой дороги. Установка камер  — затратное дело, поэтому для каждого перекрестка с номером i известна стоимость 1 ≤ cost i ≤ 10 9 установки камеры на нем.

Помогите родителям установить камеры надлежащим образом за минимальную стоимость.

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

В первой строке входного файла содержится количество перекрестков n ( 1 ≤ n ≤ 500 000 ).

В последующих n - 1 строках содержатся v i u i — перекрестки соединенные очередной дорогой.

Последняя строчка входного файла содержит n чисел сost 1 , сost 2 , ..., сost n ( 1 ≤ сost i ≤ 10 9 )  — стоимости установки камер на перекрестках.

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

В первой строке выведете минимальную стоимость установки ans и количество перекрестков k , в которых надо установить камеры.

Во второй строке выведите k чисел  — перекрестки, в которых надо установить камеры.

Если ответов несколько, разрешается вывести любой из них.

Примеры
Входные данные
6
1 2
2 3
1 4
4 5
4 6
228 1488 2 2 8 1
Выходные данные
232 3
1 3 4 
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Мирко стал генеральным директором крупной корпорации. В компании работает N человек, пронумерованных от 1 до N , Мирко имеет номер 1 . У всех кроме Мирко есть начальник. Начальник может иметь несколько подчинённых, но не более одного своего начальника.

Когда Мирко получает задание от инвесторов, он передаёт его своему подчинённому с наименьшим номером. Этот подчинённый также передаёт его своему подчинённому с наименьшим номером, и так далее, пока задание не перейдёт несчастливому работнику без подчинённых, который должен сделать задание.

Этот работник получает 1 монету, его начальник получает 2 монеты, начальник этого начальника получает 3 и так далее. Потом тот, кто на самом деле сделал работу, осознаёт, насколько эта капиталистическая система несправедлива и увольняется с работы.

Мирко получает задания до тех пор, пока в корпорации не останется всего один сотрудник — сам Мирко. Тогда он выполняет это задание, получает 1 монету и уходит из корпорации. Ему стало интересно, сколько всего монет получил каждый бывший сотрудник. Помогите ему с этим.

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

Первая строка содержит одно натуральное число N ( 1 ≤ N ≤ 2·10 5 ) — число сотрудников компании. Следующая строка содержит N - 1 чисел a 2 , a 3 , ... a n ( 1 ≤ a i < i ), a i — номер начальника i -го сотрудника.

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

Выведите N чисел, i -е число должно означать, сколько монет получил i -й сотрудник

Система оценки

Программы, верно работающие при 2 ≤ N ≤ 5000 оцениваются в 50 баллов.

Примечание

Пояснения к первому примеру:

Пояснения ко второму примеру:
Примеры
Входные данные
3
1 1
Выходные данные
5 1 1 
Входные данные
5
1 2 2 4
Выходные данные
13 8 1 3 1 
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
1024 megabytes

Фермер Джон спрятал ключи от трактора в сейфе. Коровы пытаются взломать этот сейф. Сейф защищён сложной парольной системой.

Она организована как подвешенное за вершину 0 дерево из \(n\) (\(1 \le n \le 20000\)) вершин, каждая из которых требует цифру от \(0\) до \(9\). Вершины пронумерованы от \(0\) до \(n - 1\).

Единственная информация, которой владеют коровы – что определённые последовательности длины \(5\) не появляютя на путях в этом дереве начиная с каких-то стартовых позиций при движении вверх по дереву.

По заданным \(m\) (\(0 \le m \le 50000\)) последовательностям длины \(5\), вместе с их стартовой позицией в дереве помогите коровам вычислить сколько паролей будет не подходить.

Вы должны выводить свой ответ по модулю \(1234567\).

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

Первая строка ввода содержит два разделённых пробелом целых числа, \(n\) и \(m\) (\(1 \le n \le 20000, 0 \le m \le 50000\)) - количество вершин в дереве и количество запрещённых последовательностей соответственно.

В последующих \(i\) строках находится описание дерева. Строка \(i + 1\) содержит одно целое число \(p[i]\), означающее родителя вершины \(i\) в дереве (\(0 \le p[i] \lt i\)).

В последующих \(m\) строках находится описание запрещённых последовательностей. Строка \(n + i\) содержит два целых числа \(v_i\) и \(s_i\), разделенные пробелом - стартовую вершину последовательности, и строку из \(5\) цифр, которая не встретится в шифре начиная с вершины \(v_i\) если двигаться вверх по дереву (\(0 \le v_i \lt n\)) соответственно.

Гарантируется, что корень дерева находится не менее чем в 4 шагах от \(v_i\).

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

Выведите единственное целое число – количество неподходящих конфигураций цифр по модулю \(1234567\).

Система оценки

Подзадача 1 (10 баллов): \(1 \le n \le 15, 0 \le m \le 15\)

Подзадача 2 (15 баллов): \(1 \le n \le 1000, 0 \le m \le 2000\)

Подзадача 3 (20 баллов): \(1 \le n \le 1000, 0 \le m \le 50000\)

Подзадача 4 (55 баллов): \(1 \le n \le 20000, 0 \le m \le 50000\)

Примеры
Входные данные
6 2
0
1
2
3
3
4 01234
5 91234
Выходные данные
19
ограничение по времени на тест
0.5 second;
ограничение по памяти на тест
256 megabytes

Мислав и Мирко разработали новую игру под названием повороты.

Сначала Мирко выбирает последовательность чисел длины \(n\) и число \(k\) и разбивает последовательность на секции, каждая из которых содержит \(k\) чисел (\(n\) делится на \(k\)). Первая секция содержит первые \(k\) позиций в последовательности, вторая секция содержит последующие \(k\) позиций в последовательности и так далее.

После этого Мирко начинает применять различные операции на данной последовательности. Есть два типа операций:

1. Совершить циклический сдвиг элементов последовательности чисел в каждой секции на \(x\) влево или вправо.

2. Совершить циклический сдвиг элементов последовательности чисел целиком на \(x\) влево или вправо.

Заметим, что операция типа 2 может изменить то, к какой секции принадлежит какое число.

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

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

Первая строка ввода содержит три целых числа \(n\), \(k\), \(q\) (\(1 \le n \le 100000; 1 \le k \le 100000; 1 \le q \le 100000\)) - длину последовательности, длину каждой секции и количество применённых операций соответственно.

Последующие \(q\) строк содержат описание выполненных операций. Каждая из последующих \(q\) строк содержит два целых числа \(a\) (\(1 \le a \le 2\)) - тип операции, и \(x\) (\(-100000 \le x \le 100000\)) - число позиций, на которое был произведен циклический сдвиг. Если число \(x\) отрицательно, надо производить циклический сдвиг на \(|x|\) элементов влево, иначе - на \(|x|\) элементов вправо.

Последняя строка содержит \(n\) целых чисел, \(i\)-е из которых - это число, которое будет стоять на \(i\)-й позиции после выполнения операций из условия.

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

В единственной строке выведите \(n\) чисел - исходную последовательность.

Система оценки

Подзадача 1 (15 баллов): (\(n \le 100\))

Подзадача 2 (20 баллов): (\(k \le 100\))

Подзадача 3 (65 баллов): без дополнительных ограничений

Примеры
Входные данные
4 2 2
2 2
1 1
3 2 1 0
Выходные данные
0 1 2 3 
Входные данные
8 4 4
1 3
1 15
1 -5
2 -1
6 10 14 19 2 16 17 1
Выходные данные
6 10 14 1 2 16 17 19 
Входные данные
9 3 5
1 1
2 -8
2 9
1 1
2 -4
3 1 8 7 4 5 2 6 9
Выходные данные
5 3 6 9 7 1 8 2 4 

Страница: 1 2 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест