Cod sursa(job #3203734)

Utilizator Mihai_999Diaconeasa Mihai Mihai_999 Data 14 februarie 2024 12:45:23
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <vector>
#define nl '\n'

using namespace std;

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

const int NMAX = 16001, INF = 1e9;

int n;
int sum[NMAX];
vector<int> adj[NMAX];

void dfs(int i, int tata)
{
    for (int j : adj[i])
    {
        if (j != tata)
        {
            dfs(j, i);
            if (sum[j] > 0)
                sum[i]+=sum[j];
        }
    }
}
int main()
{
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> sum[i];
    for (int i = 1; i < n; i++)
    {
        int u, v;
        fin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }
    dfs(1, 0);
    int maxi = -INF;
    for (int i = 1; i <= n; i++)
        maxi = max(maxi, sum[i]);
    fout << maxi;
    return 0;
}