Cod sursa(job #2116047)

Utilizator vladavladaa vlada Data 27 ianuarie 2018 12:04:56
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <vector>

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

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

void radacinare(int x)
{
    dp[x]=0;
    viz[x]=1;
    for(int y=0;y<ad[x].size();y++)
    {
        if(viz[ad[x][y]]==0)
        {
            radacinare(ad[x][y]);
            dp[x]=dp[x]+max(0,dp[ad[x][y]]);
        }
    }
    dp[x]=dp[x]+v[x];
    smax=max(dp[x],smax);
}
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);
    fout<<smax;
    return 0;
}