Cerința
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
#include <bits/stdc++.h> using namespace std; ifstream cin("afisarefii.in"); ofstream cout("afisarefii.out"); vector <int> G[101]; int n , x , k , T[101]; int main() { cin >> n; for(int i = 1 ; i <= n ; i++) { cin >> T[i]; if(T[i] != 0) G[T[i]].push_back(i); } cin >> k; for(int i = 1 ; i <= k ; i++) { int rez[101] = {0} , cnt = 0; cin >> x; for(auto i:G[x]) cnt++ , rez[cnt] = i; cout << cnt << " "; for(int i = 1 ; i <= cnt ; i++) cout << rez[i] << " "; cout << '\n'; } }