Cod sursa(job #2766936)

Utilizator CelestinNegraru Celestin Celestin Data 3 august 2021 22:24:29
Problema Asmax Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>
#include <vector>
#include <fstream>
#define INFINITY 0x3f3f3f3f
#define maxi 16000
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int tata[1+maxi],val[1+maxi],dinamica[1+maxi],n,summy=-INFINITY;
vector<int> V[1+maxi];
bool viz[1+maxi];
void READ()
{
    int a,b;
    f>>n;
    for(int i=1;i<=n;i++)
        f>>val[i];
    for(int i=1;i<=n-1;i++)
    {
        f>>a>>b;
        V[a].push_back(b);
        V[b].push_back(a);
    }
    f.close();
    return;
}
int DFS(int x)
{
    viz[x]=true;
    dinamica[x]=val[x];
    for(auto a:V[x])
    {
        if(!viz[a])
        {
        tata[a]=x;
        if(a!=tata[x])
        {
            DFS(a);
        }
        if(val[a]>=0)
            dinamica[x]+=dinamica[a];
        }
    }
    return val[x];
}
int main()
{
    READ();
    DFS(1);
    for(int i=1;i<=n;i++)
        if(dinamica[i]>summy)
         summy=dinamica[i];
    g<<summy;
    g.close();
    return 0;
}