Cod sursa(job #2361185)

Utilizator AlexTudorAlex Brinza AlexTudor Data 2 martie 2019 13:40:36
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("asmax.in");
ofstream fout("asmax.out");

const int NMAX=16005;

int val[NMAX],c[NMAX],viz[NMAX];

vector < int > Ad[NMAX];

int cost=-160000005;

int n;

void read()
{
    fin>>n;

    for(int i=1;i<=n;++i)
    {
        fin>>val[i];
    }

    int x,y;

    for(int i=1;i<n;++i)
    {
        fin>>x>>y;
        Ad[x].push_back(y);
        Ad[y].push_back(x);
    }
}

void dfs(int nod)
{
    viz[nod]=1;

    c[nod]=val[nod];

    int w;

    for(int i=0;i<Ad[nod].size();++i)
    {
        w=Ad[nod][i];

        if(viz[w]==0)
            {

             dfs(w);

             if(c[w]>0) c[nod]+=c[w];
            }
    }
}

void solve()
{
    dfs(1);

    for(int i=1;i<=n;++i)
        if(c[i]>cost) cost=c[i];

    fout<<cost;
}


int main()
{
    read();
    solve();
    return 0;
}