Cod sursa(job #657531)

Utilizator gramatovici_paulGramatovici Paul gramatovici_paul Data 6 ianuarie 2012 18:36:14
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

vector <int> m[16010];
int v[16010],n,maxim=-1000000000;

int profit(int ant,int poz)
{
    int i,sum=0,x;
    for(i=0;i<m[poz].size();++i)
    {
        if (m[poz][i]==ant)
            continue;
        x=profit(poz,m[poz][i]);
        if (x>0)
            sum+=x;
    }
    sum+=v[poz];
    if(sum>maxim)
        maxim=sum;
        return sum;
}

int main()
{
    int i,p,q;
    in>>n;
    for(i=1;i<=n;++i)
    {
        in>>v[i];
    }
    for(i=1;i<=n-1;++i)
    {
        in>>p>>q;
        m[p].push_back(q);
        m[q].push_back(p);
    }
    profit(0,1);
    out<<maxim<<"\n";
    return 0;
}