Cod sursa(job #2709254)

Utilizator cristia_razvanCristia Razvan cristia_razvan Data 20 februarie 2021 08:52:31
Problema Asmax Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>
#define pb push_back
using namespace std;

ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<int> h[15002];
int n, viz[16002], a[16002];
int dp[16002]; /// dp[i] suma maxima cre se poate obtine in subarborele cu radacaina in nodul i

void DFS(int k)
{
    viz[k] = 1;
    dp[k] = a[k];
    for(int i : h[k])
        if(!viz[i])
        {
            DFS(i);
            if(dp[i] > 0) dp[k] += dp[i];
        }
}

int main()
{
    int x, y;
    fin >> n;
    for(int i = 1; i <= n; i++)
        fin >> a[i];
    for(int i = 1; i < n; i++)
    {
        fin >> x >> y;
        h[x].pb(y);
        h[y].pb(x);
    }
    DFS(1);
    int maxx = dp[1];
    for(int i = 2 ; i <= n; i++)
        maxx =max(maxx, dp[i]);
    fout << maxx << "\n";
    fin.close();
    fout.close();
    return 0;
}