Cod sursa(job #2732291)

Utilizator levladiatorDragutoiu Vlad-Ioan levladiator Data 28 martie 2021 21:04:39
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>
#define mp make_pair
#define pb push_back
#define pf push_front
#define ll long long
#define ull unsigned long long
#define x first
#define y second
#define pi pair<int,int>
#define pl pair<ll,ll>
#define EPSILON 0.000001

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

const ll NMAX=1e5+5,INF=1e18,MOD=104659,MMAX=1e2+5,inf=INT_MAX;

int N;
int dp[NMAX],v[NMAX],ans=-1e9;
vector<int> adj[NMAX];

void dfs(int nod,int tata)
{
    dp[nod]=v[nod];
    for(auto &fiu : adj[nod])
    {
        if(fiu==tata)continue;
        dfs(fiu,nod);
        if(dp[fiu]>0)dp[nod]+=dp[fiu];
    }
    ans=max(ans,dp[nod]);
}

int main()
{
    fin>>N;
    for(int i=1;i<=N;i++)
    {
        fin>>v[i];
    }
    for(int i=1;i<N;i++)
    {
        int a,b;
        fin>>a>>b;
        adj[a].pb(b);
        adj[b].pb(a);
    }
    dfs(1,0);
    fout<<ans;

    return 0;
}