Cod sursa(job #2856886)

Utilizator AlexandruChris5Alex Christian AlexandruChris5 Data 24 februarie 2022 15:23:35
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

vector <int> G[16005];
int v[16005];
int vizitat[16005];
int dp[16005];

void dfs(int nod_curent)
{
    vizitat[nod_curent]=1;
    dp[nod_curent]=v[nod_curent];
    for(int i=0;i<G[nod_curent].size();i++)
    {
        int fiu=G[nod_curent][i];
        if(vizitat[fiu]==0)
        {
            dfs(fiu);
            if(dp[fiu]>0)
            {
                dp[nod_curent]+=dp[fiu];
            }
        }
    }
}

int main()
{
    int n,smax=-2000;
    in>>n;
    for(int i=1;i<=n;i++)
    {
        in>>v[i];
    }
    for(int i=1;i<=n-1;i++)
    {
        int x,y;
        in>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
    dfs(1);
    for(int i=1;i<=n;i++)
    {
        smax=max(smax,dp[i]);
    }
    out<<smax;
}