Олимпиадный тренинг

Задача . E. Полное бинарное дерево Ирис


Ирис любит полные бинарные деревья.

Определим глубину корневого дерева как максимальное количество вершин на простых путях от некоторой вершины до корня. Полное бинарное дерево глубины \(d\) — это бинарное дерево глубины \(d\) с ровно \(2^d - 1\) вершинами.

Ирис называет дерево \(d\)-бинарным, если к нему можно добавить некоторые вершины и рёбра, чтобы оно стало полным бинарным деревом глубины \(d\). Обратите внимание, что любая вершина может быть выбрана в качестве корня полного бинарного дерева.

Поскольку выполнение операций над большими деревьями затруднительно, она определяет бинарную глубину дерева как минимальное \(d\), удовлетворяющее условию, что дерево является \(d\)-бинарным. В частности, если не существует целого числа \(d \ge 1\), такого что дерево является \(d\)-бинарным, то бинарная глубина дерева равна \(-1\).

У Ирис сейчас есть дерево, состоящее только из вершины \(1\). Она хочет добавить ещё \(n - 1\) вершин, чтобы сформировать большее дерево. Она будет добавлять вершины по одной. Когда она добавляет вершину \(i\) (\(2 \leq i \leq n\)), она сообщит вам целое число \(p_i\) (\(1 \leq p_i < i\)) и добавит новое ребро, соединяющее вершины \(i\) и \(p_i\).

Ирис хочет спросить вас о бинарной глубине дерева, образованного первыми \(i\) вершинами для всех \(1 \le i \le n\). Можете ли вы сказать ей ответ?

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

Каждый тест состоит из нескольких наборов входных данных. Первая строка содержит одно целое число \(t\) (\(1 \leq t \leq 10^4\)) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит одно целое число \(n\) (\(2 \leq n \leq 5 \cdot 10^5\)) — итоговый размер дерева.

Вторая строка каждого набора входных данных содержит \(n - 1\) целых числа \(p_2, p_3, \ldots, p_n\) (\(1 \leq p_i < i\)) — описания всех рёбер дерева.

Гарантируется, что сумма \(n\) по всем наборам входных данных не превосходит \(5 \cdot 10^5\).

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

Для каждого набора входных данных выведите \(n\) целых чисел, \(i\)-е из которых представляет бинарную глубину дерева, образованного первыми \(i\) вершинами.

Примечание

В первом наборе входных данных итоговое дерево показано ниже:

  • Дерево, состоящее из вершины \(1\), имеет бинарную глубину \(1\) (само дерево является полным бинарным деревом глубины \(1\)).
  • Дерево, состоящее из вершин \(1\) и \(2\), имеет бинарную глубину \(2\) (мы можем добавить вершину \(3\), чтобы сделать его полным бинарным деревом глубины \(2\)).
  • Дерево, состоящее из вершин \(1\), \(2\) и \(3\), имеет бинарную глубину \(2\) (само дерево является полным бинарным деревом глубины \(2\)).

Во втором наборе входных данных полное бинарное дерево, образованное после добавления некоторых вершин к дереву, состоящему из \(n\) вершин, показано ниже (добавленные вершины выделены жирным):

Глубина образованного полного бинарного дерева равна \(4\).

В пятом наборе входных данных итоговое дерево показано ниже:

Можно доказать, что Ирис не может сформировать никакое полное бинарное дерево, добавляя вершины и рёбра, поэтому бинарная глубина равна \(-1\).


Примеры
Входные данныеВыходные данные
1 7
3
1 1
6
1 2 3 4 5
7
1 1 3 2 5 1
10
1 1 2 1 4 2 4 5 8
10
1 1 3 1 3 2 2 2 6
20
1 1 2 2 4 4 5 5 7 6 8 6 11 14 11 8 13 13 12
25
1 1 3 3 1 5 4 4 6 8 11 12 8 7 11 13 7 13 15 6 19 14 10 23
1 2 2 
1 2 2 3 3 4 
1 2 2 3 3 4 4 
1 2 2 3 3 3 4 4 5 5 
1 2 2 3 3 4 4 4 -1 -1 
1 2 2 3 3 4 4 4 4 5 5 5 5 6 6 6 6 6 6 7 
1 2 2 3 3 4 4 4 4 5 5 6 6 6 6 6 7 7 7 7 7 8 8 8 8

time 4000 ms
memory 1024 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя