Cod sursa(job #1327871)

Utilizator blue_skyPetrica Stefan Cosmin blue_sky Data 27 ianuarie 2015 12:24:17
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <list>
#define DIM 16001

using namespace std;

int n,a[DIM],x,y,mx,s[DIM];
list<int> nod[DIM];
bool v[DIM];

void parcurgere(int k)
{
    v[k]=1;
    s[k]+=a[k];
    for(list<int>::iterator i=nod[k].begin();i!=nod[k].end();++i)
    {
        if(!v[*i])
        {
            parcurgere(*i);
            if(s[*i]>0)
            s[k]+=s[*i];
        }
    }
    if(s[k]>mx)
    mx=s[k];
}

int main()
{
    FILE *f=fopen("asmax.in","r");
    FILE *g=fopen("asmax.out","w");
    fscanf(f,"%d",&n);

    fscanf(f,"%d",&a[1]);
    mx=a[1];
    for(int i=2;i<=n;++i)
    {
        fscanf(f,"%d",&a[i]);
        if(a[i]>mx)
        mx=a[i];
    }
    for(int i=1;i<n;++i)
    {
        fscanf(f,"%d %d",&x,&y);
        nod[x].push_back(y);
        nod[y].push_back(x);
    }
    parcurgere(1);
    fprintf(g,"%d",mx);
    fclose(f);
    fclose(g);
    return 0;
}