fbpx

Problema #647 – Subarbore2 – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dă vectorul de tați al unui arbore cu rădăcină cu n noduri și un nod k. Fiecare nod al arborelui are asociată o valoare numerică întreagă. Determinați suma valorilor asociate nodurilor din subarborele cu rădăcina în k.

Date de intrare

Fișierul de intrare subarbore2.in conține pe prima linie numărul de noduri n și nodul k. Pe a doua linie se află vectorul de tați al arborelui, valorile fiind separate prin spații. Pe linia a treia se află, în ordine, valorile asociate nodurilor din arbore.

Date de ieșire

Fișierul de ieșire subarbore2.out va conține pe prima linie valoarea cerută.

Restricții și precizări

  • 1 ≤ n ≤ 100
  • 1 ≤ k ≤ n
  • în vectorul de tați rădăcina este marcată cu 0
  • valorile asociate nodurilor din arbore sunt numere întregi din intervalul [-1000,1000]

Exemplu

subarbore2.in

8 4
4 3 0 3 2 1 4 1
-3 -2 4 4 0 -3 3 2 

subarbore2.out

3
#include <bits/stdc++.h>
using namespace std;

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

int n , k , t[101] , val[101] , s;

int main()
{
    cin >> n >> k;
    for(int i = 1 ; i <= n ; i++)
        cin >> t[i];
    for(int i = 1 ; i <= n ; i++)
        cin >> val[i];
    s += val[k];
    for(int i = 1 ; i <= n ; i++)
    {
        int ok = 0;
        int p = t[i];
        while(p)
        {
            if(p == k)ok = 1;
            p = t[p];
        }
        if(ok) s += val[i];
    }
    cout << s;
    return 0;

}
Comentarii

S-ar putea sa iti placa