Cod sursa(job #1412946)

Utilizator karlaKarla Maria karla Data 1 aprilie 2015 17:39:02
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <stdio.h>
#include <vector>

using namespace std;

int n, val[16100], viz[16100];
long long suma[16100];
vector<int> l[16100];
FILE*f=fopen("asmax.in","r"),*g=fopen("asmax.out","w");

void DFS(int nod)
{
    suma[nod] = val[nod];
    viz[nod] = 1;
    int max1 = 0, s = 0, ok = 1;
    for(int i = 0; i < l[nod].size(); i++)
    {
        ok = 0;
        if(viz[l[nod][i]] == 0){
            DFS(l[nod][i]);
            if(suma[l[nod][i]] > 0)
                suma[nod] += suma[l[nod][i]];

        }
    }


}


int main()
{
    int x, y;
    fscanf(f,"%d\n",&n);
    for(int i = 1; i <= n; i++)
        fscanf(f,"%d ",&val[i]);
    for(int i = 1; i <= n-1; i++)
    {
        fscanf(f,"%d %d\n",&x,&y);
        l[x].push_back(y);
        l[y].push_back(x);
    }
    long long maxim  = -(1<<30);
        DFS(1);
        for(int i = 1; i <= n; i++)
        if(maxim < suma[i])
            maxim = suma[i];
    fprintf(g,"%lld\n",maxim);
    return 0;
}