tree-rebuilder

Time limit: 0.3s Memory limit: 256MB Input: Output:

Cerință

Pentru un arbore, TT, cu NN noduri, definim M(T)=m0,m1,,mN1M(T) = m_0, m_1, \dots, m_{N-1}, unde mim_i este distanța de la ii până la cel mai depărtat nod de nodul ii.

Se dă un șir, AA, de NN numere. Să se găsească un arbore TT, astfel încât M(T)=AM(T) = A. Se garantează că există un astfel de arbore.

Date de intrare

Pe prima linie se găsește numrul NN. Pe a doua linie se găsesc NN numere naturale, al ii-lea dintre ele fiind AiA_i.

Date de ieșire

Se vor afișa NN numere, al ii-lea dintre ele reprezentând tatăl nodului ii. Dacă nodul ii este rădăcina arborelui, se va afișa 1-1. Dacă există mai multe soluții, se poate afișa oricare.

Restricții și precizări

  • 2N200 0002 \leq N \leq 200 \ 000;
  • 1AiN1 \leq A_i \le N;
  • În cadrul acestei probleme, distanța dintre două noduri este egală cu numărul de muchii de pe drumul simplu dintre aceste două noduri.
  • Pentru teste în valoare de 30 de puncte, 1N71 \leq N \leq 7;
  • Pentru teste în valoare de alte 26 de puncte, 1N1001 \leq N \leq 100;

Exemplul 1

stdin

4
2 2 1 2

stdout

2 2 -1 2

Explicație

Acest exemplu descrie un arbore de tip stea, cu rădăcina în nodul 2, unde nodurile 0, 1 și 3 sunt frunze.

Log in or sign up to be able to send submissions!