Cod sursa(job #1604609)

Utilizator gbibBacotiu Gabi gbib Data 18 februarie 2016 13:51:15
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
int dp[16005],val[16005],n,mx=-(1<<30);
vector <int> v[16005];
bool viz[16005];

int df(int nod)
{
    int nou,i,valo;
    viz[nod]=1;
    dp[nod]=val[nod];
    for(i=0;i<v[nod].size();i++)
        if(!viz[v[nod][i]])
        {
            nou=v[nod][i];
            valo=df(nou);
            if(valo>0)
            {
                dp[nod]+=valo;
            }
        }
    mx=max(dp[nod],mx);
    return dp[nod];
}

int main()
{int i,a,b;
in>>n;
for(i=1;i<=n;i++)
{
    in>>val[i];
}
for(i=1;i<n;i++)
{
    in>>a>>b;
    v[a].push_back(b);
    v[b].push_back(a);
}
df(1);
out<<mx<<'\n';
    return 0;
}