Cod sursa(job #2766327)

Utilizator pielevladutPiele Vladut Stefan pielevladut Data 31 iulie 2021 16:56:50
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

int n;
vector<int> v[16016];
int dp[16016];

void dfs(int fiu, int tata)
{
    for(int it = 0; it != v[fiu].size(); it++)
    {
        int vecin = v[fiu][it];
        if(vecin != tata)
        {
            dfs(vecin,fiu);
            if(dp[fiu] + dp[vecin] < dp[fiu])
                continue;
            dp[fiu] += dp[vecin];
        }
    }
}


int main()
{
    fin >> n;
    int ans = INT_MIN;
    for(int i = 1; i <= n; i ++)
    {
        fin >> dp[i];
        ans = max(ans, dp[i]);
    }
    for(int i = 1; i < n; i ++)
    {
        int u, w;
        fin >> u >> w;
        v[u].push_back(w);
        v[w].push_back(u);
    }
    dfs(1,0);
    for(int i = 1; i <= n; i ++)
    {
        ans = max(ans, dp[i]);
    }
    fout << ans << '\n';
}