Intr-un arbore cu rădăcină, spunem că rădăcina este pe nivelul 1
, fiii rădăcinii pe nivelul 2
, fiii fiilor rădăcinii pe nivelul 3
, etc.
Cerința
Se dă vectorul de tați al unui arbore cu rădăcină cu n
noduri și k
noduri din arbore. Determinați pentru fiecare dintre cele k
noduri nivelul pe care se află.
Date de intrare
Fișierul de intrare nivele.in
conține pe prima linie numărul de noduri n
. Pe linia următoare se află vectorul de tați al arborelui, valorile fiind separate prin spații. Linia a treia conține numărul k
, iar linia a patra k
noduri, x[1]
, x[2]
, … , x[k]
.
Date de ieșire
Fișierul de ieșire nivele.out
va conține k
linii. Linia i
va conține nivelul pe care se află nodul x[i]
în arborele dat
Restricții și precizări
1 ≤ k ≤ n ≤ 100
- în vectorul de tați rădăcina este marcată cu
0
Exemplu
nivele.in
7 4 1 7 0 7 7 1 4 1 3 4 7
nivele.out
2 4 1 3
SOLUTIE
#include <iostream> #include <fstream> using namespace std; ifstream fin("nivele.in"); ofstream fout("nivele.out"); int n , k, t[105]; int main() { fin >> n; for(int i = 1 ; i <= n ; i ++) fin >> t[i]; fin >> k; for(int i = 1 ; i <= k ; i ++) { int x , nivel = 0; fin >> x; while(x != 0) nivel ++, x = t[x]; fout << nivel << "\n"; } return 0; }