Se dă vectorul de tați al unui arbore cu rădăcină cu n
noduri și k
noduri distincte din arbore. Afișați fiii fiecăruia dintre cele k
noduri.
Date de intrare
Fișierul de intrare afisarefii.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 trei 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 afisarefii.out
va conține k
linii. Linia i
va conține numărul de fii ai lui x[i]
urmat de un spațiu și de lista fiilor lui x[i]
, separați și ei printr-un spațiu.
Restricții și precizări
1 ≤ k ≤ n ≤ 100
- în vectorul de tați rădăcina este marcată cu
0
- dacă un nod
x[i]
nu are fii, linia corespunzătoare din fișierul de ieșire va contine doar valoarea0
Exemplu
afisarefii.in
8 4 3 0 3 2 1 2 1 4 3 4 7 1
afisarefii.out
2 2 4 1 1 0 2 6 8
SOLUTIE
#include <iostream> #include <fstream> using namespace std; ifstream fin("afisarefii.in"); ofstream fout("afisarefii.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; fin >> x; int nrf = 0; for(int i = 1 ; i <= n ; ++i) if(t[i] == x) nrf ++; fout << nrf << " "; for(int i = 1 ; i <= n ; ++i) if(t[i] == x) fout << i << " "; fout << "\n"; } return 0; }