Cod sursa(job #2044728)

Utilizator TherevengerkingSurani Adrian Therevengerking Data 21 octombrie 2017 12:39:45
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
const int Nmax = 16000 + 5;
int n, a[Nmax], smax = - (1 << 30);
#define pb push_back
vector<int> v[Nmax];
bool viz[Nmax];
int dfs(int nod)
{
    int ssm = a[nod];
    viz[nod] = 1;
    for(auto i : v[nod])
    {
        if(viz[i] == 1)continue;
        int sact = dfs(i);
        if(sact >= 0)
            ssm += sact;
    }
    if(ssm > smax)smax = ssm;
    return ssm;
}
int main()
{
    fin >> n;
    for(int i = 1; i <= n; ++i)fin >> a[i];

    for(int i = 1, x , y; i < n; ++i)
    {
        fin >> x >> y;
        v[x].pb(y);
        v[y].pb(x);
    }
    dfs(1);
    fout << smax;

    return 0;
}