Cod sursa(job #3312520)

Utilizator Floroiu_MariusFloroiu Marius Cristian Floroiu_Marius Data 28 septembrie 2025 20:32:04
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n;
vector<int> v[16003];
int a[16003];
int rez=-1e9;
int dfs(int nod,int parent)
{
    int sum=a[nod];
    for (auto i:v[nod])
    {
        if (i!=parent)
        {
            int val=dfs(i,nod);
            sum+=val;
        }
    }
    rez=max(rez,sum);
    return max(0,sum);
}
bool ok;
int main()
{
    fin>>n;
    for (int i=1;i<=n;i++)
    {
        fin>>a[i];
        if (a[i]>0) ok=true;
    }
    if (!ok)
    {
        int Max=a[1];
        for (int i=2;i<=n;i++)
            Max=max(Max,a[i]);
        fout<<Max;
        return 0;
    }
    for (int i=1;i<n;i++)
    {
        int x,y;
        fin>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
    dfs(1,0);
    fout<<rez;
    return 0;
}