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
Solutie
#include <iostream> #include <fstream> using namespace std; ifstream fin("frunze.in"); ofstream fout("frunze.out"); int n , t[105], v[105]; int main() { fin >> n; for(int i = 1 ; i <= n ; i ++) fin >> t[i]; int r = 0; for(int i = 1 ; i <= n && r == 0 ; ++i) if(t[i] == 0) r = i; fout << r << "\n"; for(int i = 1 ; i <+ n ; ++i) if(t[i] != 0) v[t[i]] = 1; int k = 0; for(int i = 1 ; i <= n ; ++i) if(v[i] == 0) k ++; fout << k << "\n"; for(int i = 1 ; i <= n ; ++i) if(v[i] == 0) fout << i << " "; return 0; }