Cod sursa(job #1653206)

Utilizator Cezar_MihalceaCezar Mihalcea Cezar_Mihalcea Data 15 martie 2016 19:54:29
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream>
using namespace std;

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

int lst[16001],vf[32001],urm[32001],n,val[16001],nr,sol[16001];
bool viz[16001];

int maxim(int a,int b)
{
    if(a>b)
        return a;
    return b;
}

void adauga(int x,int y)
{
    nr++;
    vf[nr]=y;
    urm[nr]=lst[x];
    lst[x]=nr;
}

void dfs(int x)
{
    int poz=lst[x],y;
    viz[x]=true;
    sol[x]=val[x];
    while(poz!=0)
    {
        y=vf[poz];
        if(!viz[y])
        {
            dfs(y);
            sol[x]=sol[x]+maxim(sol[y],0);
        }
        poz=urm[poz];
    }
}

int main()
{
    int i,x,y,maxx=0;
    f>>n;
    for(i=1;i<=n;i++)
        f>>val[i];
    for(i=1;i<=n-1;i++)
    {
        f>>x>>y;
        adauga(x,y);
        adauga(y,x);
    }
    dfs(1);
    for(i=1;i<=n;i++)
        if(sol[i]>maxx)
            maxx=sol[i];
    g<<maxx;
    return 0;
}