C. Сокращение штатов
Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод 
Послать решение Blockly Посылки Темы Где Обсудить (1)
В связи с кризисом Билл Виндоуз решил закрыть или продать не приносящие доходы подразделения и уволить некоторую часть сотрудников таким образом, чтобы его прибыль стала максимальна. При этом структура сложившихся иерархических отношений в компании должна сохраниться. Можно уволить в том числе главных менеджеров компании и оставить от компании наиболее доходную часть, продав менее доходные подразделения.
Напишите программу, которая определит персонал обновленной компании.
В первой строке ввода содержатся одно целое число N (1 ) – количество сотрудников в компании. Далее следует N строк, содержащих по два целых числа – доход от работы сотрудника p_i (-10 000\ ≤\ p_i\ ≤\ 10 000) и номер сотрудника c_i (0\ ≤\ c_i\ ≤\ N), который является его начальником (для топ-менеджера компании c_i=0).
В первой строке вывести одно целое число M (M\ ≥\ 0) – количество оставшихся в компании сотрудников после сокращения, при котором доход компании становится максимальным. Во второй строке вывести M чисел через пробел — номера сотрудников в порядке возрастания. Если существует несколько вариантов решения, нужно вывести один (любой) из них.
Пример ввода
7
10 3
5 3
-3 6
-10 6
7 4
-1 0
-1 3