Cod sursa(job #974756)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 18 iulie 2013 11:30:44
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <list>

using namespace std;

struct nod
{
    int val;
    list<int> vecini;
}v[16005];
int m[16005];

void parc(int nod,int father)
{
    m[nod]=v[nod].val;
    list<int>::iterator it;
    for(it=v[nod].vecini.begin();it!=v[nod].vecini.end();it++)
        if((*it)!=father)
        {
            parc(*it,nod);
            if(m[*it]>0)
                m[nod]+=m[*it];
        }
}

int main()
{
    ifstream fin("asmax.in");
    ofstream fout("asmax.out");

    int n,i,x,y;
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i].val;

    for(i=1;i<n;i++)
    {
        fin>>x>>y;
        v[x].vecini.push_back(y);
        v[y].vecini.push_back(x);
    }

    parc(1,0);

    int maxim=m[1];
    for(i=2;i<=n;i++)
        if(m[i]>maxim)
            maxim=m[i];
    fout<<maxim<<'\n';

    fin.close();
    fout.close();
    return 0;
}