Cod sursa(job #1895199)

Utilizator VisanCosminVisan Tudor Cosmin VisanCosmin Data 27 februarie 2017 20:34:45
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <vector>
#include <stdio.h>

using namespace std;

vector<int> a[16001];
long val[16001],N,x,y;
bool vazut[16001];

void rezolva(int u)
{
    long suma = 0,ret;
    vazut[u] = 1;
    for(int j = 0;j<a[u].size();j++)
        if(vazut[a[u][j]] == 0)
        {
            rezolva(a[u][j]);
            if( val[a[u][j]] > 0 )
                suma = suma + val[a[u][j]];
        }
    val[u] +=suma;

}


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

    fscanf(f,"%d",&N);
    for(int i = 1;i<=N;i++)
        fscanf(f,"%ld",&val[i]);

    for(int i = 0;i<N-1;i++)
    {
        fscanf(f,"%ld%ld",&x,&y);
        a[x].push_back(y);
        a[y].push_back(x);
    }
    rezolva(1);
    int minn = val[1];
    for(int i = 2;i<=N;i++)
        if(val[i]> minn) minn = val[i];

    fprintf(g,"%ld",minn);


    fclose(f);
    fclose(g);


    return 0;
}