Cod sursa(job #2286762)

Utilizator mihailrazMihail Turcan mihailraz Data 20 noiembrie 2018 18:16:02
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <vector>
#define NMAX 16000

using namespace std;
ifstream fi("asmax.in");
ofstream fo("asmax.out");
int n, res;
int C[NMAX+5], DP[NMAX+5], VIZ[NMAX+5];
vector <int> G[NMAX+5];

void citire(void)
{
    int x, y;
    fi>>n;
    for(int i=1; i<=n; i++)
        fi>>C[i];
    for(int i=1; i<=n-1; i++)
    {
        fi>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
}

void dfs(int nod)
{
    VIZ[nod]=1;
    for(auto vec:G[nod])
        if(!VIZ[vec])
        {
            dfs(vec);
            DP[nod]+=max(DP[vec], 0);
        }
    DP[nod]+=C[nod];
}

int main()
{
    citire();
    dfs(1);
    for(int i=1; i<=n; i++)
        res=max(res, DP[i]);
    fo<<res;
    fi.close();
    fo.close();
    return 0;
}