Задача « Очередь »
У кассы стадиона стоит длинная очередь из n человек. Как обычно, на время обеденного пе- рерыва кассу закрыли, и недовольная очередь футбольных фанатов разошлась по своим делам. Когда обед подходил к концу, все снова собрались у кассы. Ну и как же их теперь расставить в прежнем порядке? К счастью, все футбольные фанаты носили футболки с различными номерами на спине и каждый из них помнил номер на футболке стоявшего перед ним. Разумеется, кроме первого, стоявшего у кассы. Вам необходимо восстановить порядок стоявших в очереди фанатов.
Формат входного файла queue.in Входной файл: В первой строке записано одно целое число n - количество фанатов в очереди (2 <= n <= 2 * 1000000;). Следующие n - 1 строк содержат по два разделённых пробелом целых числа a и b - номера на футболках стоявших рядом друг с другом фанатов, где a - номер на футболке фаната, стоявшего за фанатом в футболке с номером b (1 <= a,b <= n).
Формат выходного файла queue.out Выходной файл: В единственной строке запишите через пробел n целых чисел - номера на футболках фанатов в обратном порядке очереди, начиная с последнего и заканчивая первым, стоявшим у кассы.
INPUT.TXT |
3
3 2 1 3 |
OUTPUT.TXT |
1 3 2 |
INPUT.TXT |
5 |
4 1 3 4 1 2 5 3 |
OUTPUT.TXT |
5 3 4 1 2 |
Разбор задачи №1 "Очередь"
Камско-Устьинского муниципального района РТ
Запомним в массиве, кто за кем стоит. Элемент массива с индексом [i] равен номеру человека, который стоит непосредственно перед человеком с номером i. Последовательно выводим элементы массива: на очередном шаге выводим элемент массива с индексом, равным числу, выведенному непосредственно перед ним. Возникает вопрос, какое число вывести первым?
Так как у человека с таким номером нет предшественника, то этот номер не встречается среди элементов массива. Его можно определить, вычтя из суммы всех натуральных чисел от 1 до n суммы вторых чисел в данных парах. Первую сумму можно вычислить по формуле суммы первых членов арифметической прогрессии, вторую как сумму всех элементов массива. Т.к. школьники 7-8 классов ещё не знакомы с арифметической прогрессией, то эти суммы и даже искомое число можно вычислять непосредственно при одном прохождении массива, прибавляя значения параметра массива и вычитая значения очередного элемента массива. Найдя номер первого в очереди, сообщаем его и выводим в описанном порядке элементы массива.