Cod sursa(job #831092)

Utilizator crazzytudTudor Popa crazzytud Data 8 decembrie 2012 09:35:06
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream>
#include<vector>
using namespace std;


ifstream in("asmax.in");
ofstream out("asmax.out");

vector <int> v[16001];
int sum[16001],ver[16001];

bool marcat[16001];
void dfs(int nod)
{
    sum[nod]=ver[nod];
    marcat[nod]=true;;
    for(int i=0;i<v[nod].size();i++)
    {
        if(!marcat[v[nod][i]])
        {
            dfs(v[nod][i]);
            if(sum[v[nod][i]]>0)
                sum[nod]+=sum[v[nod][i]];
        }
    }

}

int main()
{
    int n,i,a,b;
    in>>n;

    for(i=1;i<=n;i++)
        in>>ver[i];

    for(i=1;i<n;i++)
    {
        in>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    dfs(1);
    int max=-16000000;
    for(i=1;i<=n;i++)
        if(max<sum[i])
            max=sum[i];

    out<<max<<"\n";
}