fbpx

Problema #636 – Arbore – Rezolvari PBInfo

de Mihai-Alexandru

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 
#include <bits/stdc++.h>

using namespace std;

ifstream cin("arbore.in");
ofstream cout("arbore.out");

vector <int> G[101];
int n  , p , x , y , T[102] , P[101];

void dfs(int x)
{
    P[x] = 1;
    for(auto i:G[x])
        if(!P[i])
        {
            T[i] = x;
            dfs(i);
        }
}

int main()
{
    cin >> n >> p;
    for(int i = 1 ; i < n ; i++)
    {
        cin >> x >> y;
        G[x].push_back(y);
        G[y].push_back(x);
    }

    dfs(p);

    for(int i = 1 ; i <= n ; i++)
        cout << T[i] << " ";
}
Comentarii

S-ar putea sa iti placa