Cerința
Se dă vectorul de tați al unui arbore cu rădăcină cu n
noduri. Determinați rădăcina arborelui și frunzele acestuia.
Date de intrare
Fișierul de intrare frunze.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.
Date de ieșire
Fișierul de ieșire frunze.out
va conține pe prima linie rădăcina arborelui. A doua linia va conține numărul de frunze din arbore, iar următoarea linie frunzele, în ordine crescătoare și separate printr-un spațiu.
Restricții și precizări
1 ≤ n ≤ 100
- în vectorul de tați rădăcina este marcată cu
0
Exemplu
frunze.in
7 4 1 7 0 7 7 1
frunze.out
4 4 2 3 5 6
#include <bits/stdc++.h> using namespace std; ifstream cin("frunze.in"); ofstream cout("frunze.out"); vector <int> G[101]; int n , x , k , rez[101] , p , cnt; int main() { cin >> n; for(int i = 1 ; i <= n ; i++) { cin >> x; if(x != 0) G[x].push_back(i); if(x == 0) p = i; } cout << p << '\n'; for(int i = 1 ; i <= n ; i++) { int ok = 0; for(auto j:G[i]) ok++; if(ok == 0) cnt++ , rez[cnt] = i; } cout << cnt << '\n'; for(int i = 1 ; i <= cnt ; i++) cout << rez[i] << " "; }