Cod sursa(job #1443695)

Utilizator obidanDan Ganea obidan Data 28 mai 2015 14:56:37
Problema Asmax Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.87 kb
#include <fstream>
#include <vector>
#include <limits>
using namespace std;
const int nmax = 16002;

vector<int> G[nmax];
int visited[nmax];
int cost[nmax];
void dfs(int u)
 {
    visited[u] = true;
    for (auto v = G[u].begin(); v != G[u].end(); ++v)
        if (!visited[*v])
        {
            dfs(*v);
            if (cost[*v] > 0)
                cost[u] += cost[*v];
        }
}

int main()
{
    int n;
    ifstream in("asmax.in");
    ofstream out("asmax.out");
    in >> n;
    for (int i = 1; i <= n; ++i)
        in >> cost[i];
    for (int i = 1; i < n; ++i)
    {
        int u, v;
        in >> u >> v;
        G[u].push_back(v);
        G[v].push_back(u);
    }
    dfs(1);
    int rez = numeric_limits<int>::min();
    for (int i = 1; i <= n; ++i)
        rez = max(rez, cost[i]);
    out << rez << '\n';

    return 0;
}