Cod sursa(job #2373509)

Utilizator Moise_AndreiMoise Andrei Moise_Andrei Data 7 martie 2019 13:51:33
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector <int> v[16005];
int dp[16005], mx = 0 - (1 << 30);
int n;
void citire()
{
    in >> n;
    for(int i = 1; i <= n; i ++)
        in >> dp[i];
    for(int i = 1; i < n; i++)
    {
        int a, b;
        in >> a >> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
}

void dfs(int nod, int tata)
{
    for(int i = 0; i < v[nod].size(); i ++)
    {
        int nnod = v[nod][i];
        if(nnod != tata)
        {
            dfs(nnod, nod);
            if(dp[nnod] > 0)
                dp[nod] += dp[nnod];
        }
    }
    mx = max(mx, dp[nod]);
}

int main()
{
    citire();
    dfs(1, 0);
    out << mx;
    return 0;
}