Cod sursa(job #3300390)

Utilizator ifrimdragosIfrim Dragos ifrimdragos Data 15 iunie 2025 12:23:21
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <climits>
#include <vector>
using namespace std;

const int nmax=16005;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<int> l[nmax];
int vals[nmax],summax[nmax];


void dfs(int node ,int father)
{
    summax[node]=vals[node];
    for(int vec : l[node])
    {
        if(vec!=father)
        {
            dfs(vec,node);
            if(summax[vec]>0)
            {
                summax[node]+=summax[vec];
            }

        }

    }

}


int main()
{
    int n,val;
    fin>>n;
    for(int i=1;i<=n;i++)
    {
      fin>>val;
      vals[i]=val;
    }
    int x,y;
    for(int i=1;i<=n-1;i++)
    {
        fin>>x>>y;
        l[x].push_back(y);
        l[y].push_back(x);

    }
    dfs(1,0);
    int cost = INT_MIN;
    for(int i=1;i<=n;i++)
    {
        cost=max(cost,summax[i]);
    }
    fout<<cost;

    return 0;
}