Задача №113659. Форум. Удаление ветви
Несмотря на то, что некоторые задачи этого блока можно решить с помощью циклов, рекомендуем написать решение с помощью рекурсивной функции.
Дано количество сообщений на некотором форуме (\(N\) натуральное, не более \(1000\)).
Также таблица, в которой указано какие сообщения на каком уровне находятся.
В первой колонке таблицы написаны номера сообщений (натуральные числа, не превосходят \(10^6\)).
Во второй колонке напротив номера сообщения стоит либо 0, если сообщение является корнем (началом) некоторой темы, либо номер того сообщения, ответом на которое является текущее.
Пример. Следующие исходные данные:
4 1 0 2 0 3 1 4 3соответствуют такой структуре форума:
Пусть администратор форума желает удалить сообщение с номером \(k\) (а также всю подветвь форума от этого сообщения). Сколько сообщений всего будет удалено (включая само сообщение номер \(k\))?
Сначала вводится натуральное число \(N\) (не превышает \(1000\)) – общее количество сообщений на форуме.
Затем вводится \(N\) строк таблицы, по \(2\) числа на строке – номер текущего сообщения и номер того сообщения, ответом на которое является текущее (или \(0\)).
В последней строке вводится натуральное число \(k\). Гарантируется, что сообщение с номером \(k\) существует.
Выведите количество сообщений, которое будет удалено.
1 1 0 1
1