Cod sursa(job #2793463)

Utilizator AndreiCroitoruAndrei Croitoru AndreiCroitoru Data 3 noiembrie 2021 17:43:23
Problema Asmax Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

vector <int> v[16001];
int dp[16001];
int val[16001];
bool viz[16001];
void DFS(int nod)
{
    dp[nod] = val[nod];
    viz[nod] = true;
    for ( auto x:v[nod])
    {
        if(!viz[x])
        {
            DFS(x);
            dp[nod] = max(dp[nod], dp[nod] + val[x]);
        }
    }
}
int main()
{
    ifstream cin("asmax.in");
    ofstream cout ("asmax.out");

    int n;
    cin >> n;
    for ( int i = 1; i <= n; i++ )
    {
        cin >> val[i];
    }
    for( int i = 1; i < n; i ++)
    {
        int a, b;
        cin >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    DFS(1);
    int maxim = -1;
    for ( int i = 1; i <= n; i++ )
    {
        if ( dp[i] > maxim )
            maxim = dp[i];
    }
    cout << maxim;

    return 0;
}