Cod sursa(job #1445303)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 30 mai 2015 13:10:12
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <vector>

#define inf 17000000
#define maxn 16010

using namespace std;

ifstream fin("asmax.in");
ofstream fout("asmax.out");

vector<int> T[maxn];
int ans[maxn], v[maxn], rez, n;

void dfs(int x, int f)
{
    ans[x] = v[x];

    for (int i = 0; i < T[x].size(); ++i)
    {
        if (T[x][i] != f)
        {
            dfs(T[x][i],x);
            if (ans[T[x][i]] >= 0)
                ans[x] += ans[T[x][i]];
        }
    }

    if (ans[x] > rez)
        rez = ans[x];
}

int main()
{
    fin >> n;

    for (int i = 1; i <= n; ++i)
    {
        fin >> v[i];
    }

    rez = -inf;

    for (int i = 1; i < n; ++i)
    {
        int a,b;
        fin >> a >> b;
        T[a].push_back(b);
        T[b].push_back(a);
    }

    dfs(1,0);
    fout << rez;
}