# PBinfo #636 – Arbore – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
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

## Cod sursă C++

```cpp
#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;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/636)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/636/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-636/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
