Cod sursa(job #3281027)

Utilizator drsbosDarius Scripcaru drsbos Data 28 februarie 2025 08:46:34
Problema Asmax Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
///sortare_divizori
vector<int>l[16000];
int n,v[16000],dp[16000],x,y,rot[16000],root,maxim=-2e9;
void dfs(int nod)
{
        dp[nod]=v[nod];

    for(auto next:l[nod])
    {
        dfs(next);
    }
    for(auto next:l[nod])
    {
        if(dp[next]>0)
            dp[nod]+=dp[next];
    }
}
int main()
{
   fin>>n;
   for(int i=1;i<=n;i++)
   {
       fin>>v[i];
   }
   for(int i=1;i<n;i++)
   {
       fin>>x>>y;
       l[x].push_back(y);
       rot[y]=1;
   }
   for(int i=1;i<=n;i++)
   {
       if(rot[i]==0)
        root=i;
   }
   dfs(root);
   for(int i=1;i<=n;i++)
   {
       maxim=max(dp[i],maxim);
   }
   fout<<maxim;

}