Cod sursa(job #2469885)

Utilizator etienAndrone Stefan etien Data 8 octombrie 2019 10:48:56
Problema Asmax Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <iostream>

using namespace std;

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

int n,i,nod[16001],summax=-1000001,p;
int a,b;
int lst[16001],urm[32001],vf[16001];

int sum(int varf)
{

    if(!lst[varf])

        return nod[varf];

    else
    {

        int s=nod[varf],j;

        for(j=lst[varf]; j!=0; j=urm[j])

        {

            if(sum(vf[j])>=0)

                s+=sum(vf[j]);

        }

        return s;

    }

}
void f(int varf)
{

    int M=sum(varf),j;

    for(j=lst[varf]; j!=0; j=urm[j])

    {

        if(M<sum(vf[j]))

            M=sum(vf[j]);

    }

    if(summax<M)

        summax=M;

    for(j=lst[varf]; j!=0; j=urm[j])

    {

        f(vf[j]);

    }

}
int main()
{
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>nod[i];
    for(i=1; i<=n-1; i++)
    {
        fin>>a>>b;
        vf[++p]=a;
        vf[++p]=b;
        urm[p]=lst[a];
        lst[a]=p;
    }
    f(1);
    fout<<summax;
    return 0;
    fin.close();
    fout.close();
}