Cod sursa(job #1510685)

Utilizator Julian.FMI Caluian Iulian Julian. Data 25 octombrie 2015 15:08:51
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <stdlib.h>
#define nmax 16006
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
long *g[nmax];
long d[nmax],viz[nmax],sumamax=-160060000;

void parcurge(long x)
{ viz[x]=1;

for(long i=1;i<=g[x][0];i++)
   if(!viz[g[x][i]])
        {parcurge(g[x][i]);
        if(d[g[x][i]]>0)
            d[x]+=d[g[x][i]];
        }

if(d[x]>sumamax)sumamax=d[x];
}


int main()
{long n,i,x,a,b;
    fin>>n;
    for(i=1;i<=n;i++)
    {
        g[i]=(long*)realloc(g[i],sizeof(long));
        g[i][0]=0;
        fin>>x;
        d[i]=x;
    }

    for(i=1;i<n;i++)
    {
        fin>>a>>b;
        g[a][0]++;
        g[a]=(long*)realloc(g[a],(g[a][0]+1)*sizeof(long));
        g[a][g[a][0]]=b;
        g[b][0]++;
        g[b]=(long*)realloc(g[b],(g[b][0]+1)*sizeof(long));
        g[b][g[b][0]]=a;
    }
    parcurge(1);
    fout<<sumamax;

}