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 ≤ 1001 ≤ 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;
}