Cod sursa(job #1436307)

Utilizator deresurobertoFMI - Deresu Roberto deresuroberto Data 15 mai 2015 18:51:36
Problema Asmax Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.91 kb
//Deresu Roberto - FMI
//Re :)
#include <fstream>
#include <vector>
#include <algorithm>
#include <climits>
#define nx 160007
using namespace std;
 
int N, Sol, Val[nx];
vector<int> V[nx];
 
ifstream fin("asmax.in");
ofstream fout("asmax.out");
 
int Dfs(int node, int father)
{
    int sum = Val[node];
 
    for (vector<int>::iterator it = V[node].begin(); it != V[node].end(); it++)
    {
        if (*it != father)
        {
            int s = Dfs(*it, node);
            if (s > 0) sum += s;
        }
    }
 
    Sol = max (Sol, sum);
 
    return sum;
}
 
int main()
{
    fin >> N;
 
    for (int i = 1; i <= N; i++)
    {
        fin >> Val[i];
    }
 
    for (int i = 1; i < N; i++)
    {
        int x, y;
 
        fin >> x >> y;
        V[x].push_back(y);
        V[y].push_back(x);
    }
 
    Sol = INT_MIN;
    Dfs(1, 0);
 
    fout << Sol;
 
    return 0;
}