Cod sursa(job #974754)

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

using namespace std;

#define inf 16000010

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);
/*
    for(i=1;i<=n;i++)
        cout<<m[i]<<' ';
    cout<<'\n';
*/
    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;
}