Cod sursa(job #2916290)

Utilizator AxicaVirtosu Alexandra Mihaela Axica Data 28 iulie 2022 19:42:38
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <vector>
#include <algorithm>
#define NMAX 16000
using namespace std;
ifstream fin ("asmax.in");
ofstream fout ("asmax.out");
vector <int> L[NMAX+3];
int n, x, y;
int cost[NMAX+5];
int D[NMAX+5];///D[nod]=suma maxima a unui subarbore care are radacina in nod
int viz[NMAX+2];
int sol=-1010;
void dfs(int nod)
{
    viz[nod]=1;
    D[nod]=cost[nod];
    for(int i=0; i<L[nod].size(); i++)
    {
        int vecin=L[nod][i];
        if(viz[vecin]==0)
        {
            dfs(vecin);
            D[nod]+=max(0, D[vecin]);
        }
    }
    sol=max(sol, D[nod]);

}
int main ()
{
    fin>>n;
    for(int i=1; i<=n; i++)
        fin>>cost[i];
    for(int i=1; i<=n-1; i++)
    {
        fin>>x>>y;
        L[x].push_back(y);
        L[y].push_back(x);
    }
    dfs(1);
    fout<<sol;
   return 0;
}