Cod sursa(job #2115899)

Utilizator vladavladaa vlada Data 27 ianuarie 2018 11:16:05
Problema Asmax Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#include <fstream>
#include <vector>

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

int dp[16001],v[16001],maxx=-999999999,n,p,r;
vector<int> ad[16001];

void radacinare(int x)
{
    if(ad[x].size()==0)
        dp[x]=v[x];
    else
    for(int y=1;y<ad[x].size();y++)
    {

            radacinare(ad[x][y]);
            dp[x]=v[x]+max(0,dp[ad[x][y]]);
    }
}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
    }
    for(int i=1;i<=n-1;i++)
    {
        fin>>p>>r;
        ad[p].push_back(r);
        ad[r].push_back(p);
    }
    radacinare(1);
    for(int i=1;i<=n;i++)
    if(dp[i]>maxx)maxx=dp[i];
    fout<<maxx;
    return 0;
}