Оптимальный рабочий ограничение по времени на тест 2 секунды Система иерархии в компании Михаила представляет собой дерево, где у каждого из n сотрудников, кроме самого Михаила, есть непосредственный начальник (и наоборот, у Михаила есть несколько прямых подчиненных, у некоторых из них есть свои подчиненные, и так далее). К сожалению, у Михаила скопилось много рутинной работы, которую могут выполнить только рядовые сотрудники (то есть те, у которых нет ни одного подчиненного), но чтобы передать задание сотруднику, Михаил должен попросить передать это задание каждого другого сотрудника на пути между ними. Про каждого сотрудника известно число ci — сколько ему надо заплатить, чтобы задание было передано дальше и было в конечном итоге выполнено Михаилу выбрать рядового сотрудника так, чтобы заплатить за передачу и выполнение суммарно как можно меньше. Входные данные В первой строке ввода задано число n — количество сотрудников в компании (1⩽n⩽10е5). В следующей строке через пробел перечислены номера начальников: на i-м месте стоит номер непосредственного начальника i-го сотрудника. Число 0 означает, что это Михаил, и у него начальника нет. В третьей строке так же перечислены ci — сколько придется заплатить i-му сотруднику за передачу или выполнения задания (0⩽ci⩽10е9). Гарантируется, что себе Михаил ничего платить не должен. Выходные данные Выведите единственное число — минимальное суммарное число денег, с которым Михаилу придется расстаться. Пример входные данные
7
0 1 1 2 2 3 3
0 10 11 5 6 1 2
выходные данные
12
Можете написать идею алгоритма или код (желательно на плюсах)
2. Немного изменим ваш код и получим искомое значение x
Искомое число х = 16293
var
x, y, a, b, k: integer;
begin
k:=10000;
repeat
x:=k;
a := 0; b := 0; y := 1;
while x > 0 do
begin
if (x mod 10) mod 2 = 0
then
a := a * 10 + x mod 10
else begin
y := y * 10;
b := b * 10 + x mod 10
end;
x := x div 10
end;
a := a * y + b;
k := k + 1;
until a = 26391;
writeln(a:8, k-1:8);
end.