Cod sursa(job #1607684)

Utilizator TheFFOFratila Florin Ovidiu TheFFO Data 21 februarie 2016 15:20:13
Problema Asmax Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
#include <vector>
#include <climits>

#define NMAX 16000
#define pb push_back

using namespace std;

int n,Ans=INT_MIN;
int v[NMAX],viz[NMAX];
vector<int> g[NMAX];

void read()
{
    int i,a,b;
    scanf("%d",&n);
    for(i=1;i<=n;++i)
        scanf("%d",&v[i]);
    for(i=2;i<=n;++i)
    {
        scanf("%d%d",&a,&b);
        g[a].pb(b);
        g[b].pb(a);
    }
}

int dfs(int k)
{
    int sumanod,suma=0;
    viz[k]=1;
    vector<int>::iterator it;
    for(it=g[k].begin();it!=g[k].end();++it)
        if(!viz[*it])
        {
            sumanod=dfs(*it);
            suma+=sumanod;
        }
    suma+=v[k];
    if(suma>Ans)
        Ans=suma;
    if(suma>0)
        return suma;
    return 0;
}

int main()
{
    freopen("asmax.in","r",stdin);
    freopen("asmax.out","w",stdout);
    read();
    dfs(1);
    printf("%d\n",Ans);
    return 0;
}