Cod sursa(job #2660718)

Utilizator adiaioanaAdia R. adiaioana Data 20 octombrie 2020 12:02:42
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <vector>
#include <cstring>
#include <deque>
#include <algorithm>
using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
int N,V[16100], cap[16100];
long long dp[16100];
vector <int> viz(16010), L[16100];
deque <int> deq;
inline void scan() ;
long long mx=-1e9, ans;
inline void DupaPorumbei(int nod)
{
    long long ans;
    long long zero=0;
    ans=V[nod]; viz[nod]=1;
    for(auto nn:L[nod])
        if(!viz[nn])
        {
            DupaPorumbei(nn);
            ans=ans+max(zero,dp[nn]);
        }
        else ans=ans+max(zero,dp[nn]);
    dp[nod]=ans;
    mx=max(mx,ans);
}
int main()
{
    scan();
    DupaPorumbei(1);
    cout<<mx<<'\n';
    return 0;
}

inline void scan() {
    cin>>N;
    for(int i=1; i<=N; ++i)
        cin>>V[i], ans=max(ans,1ll*V[i]);
    for(int i=1,x,y; i<N; ++i) {
        cin>>x>>y;
        L[x].push_back(y);
        L[y].push_back(x);
    } }