Se dau cele n-1
muchii ale unui arbore cu n
noduri și un nod k
. Afișați vectorul de tați al arborelui cu rădăcina în k
.
Date de intrare
Fișierul de intrare arbore.in
conține pe prima linie numerele n k
, Următoarele n-1
linii vor conține câte o pereche i j
, reprezentând muchiile arborelui.
Date de ieșire
Fișierul de ieșire arbore.out
va conține pe prima linie elementele vectorului de tați al arborelui cu rădăcina în k
, separate printr-un spațiu.
Restricții și precizări
1 ≤ n ≤ 100
1 ≤ k ≤ n
- în vectorul de tați rădăcina este marcată cu
0
Exemplu
arbore.in
7 4 1 2 1 4 1 7 3 7 5 7 6 7
arbore.out
4 1 7 0 7 7 1
SOLUTIE
#include <iostream> #include <fstream> using namespace std; ifstream fin("arbore.in"); ofstream fout("arbore.out"); int n , k , a[105][105], t[105], v[105]; void dfs(int k , int tata) { v[k] = 1, t[k] = tata; for(int i = 1 ; i <= n ; ++i) if(v[i] == 0 && a[k][i] == 1) dfs(i , k); } int main() { fin >> n >> k; for(int p = 1 ; p < n ; p ++) { int i , j; fin >> i >> j; a[i][j] = a[j][i] = 1; } dfs(k , 0); for(int i = 1 ; i <= n ; ++i) fout << t[i] << " "; return 0; }