Cod sursa(job #1895161)

Utilizator VisanCosminVisan Tudor Cosmin VisanCosmin Data 27 februarie 2017 20:21:17
Problema Asmax Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 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,"%d",&val[i]);

    for(int i = 0;i<N-1;i++)
    {
        fscanf(f,"%d%d",&x,&y);
        a[x].push_back(y);
        a[y].push_back(x);
    }
    rezolva(1);
    fprintf(g,"%d",val[1]);


    fclose(f);
    fclose(g);


    return 0;
}