Cod sursa(job #3223181)

Utilizator Vlad_prisVlad Prismareanu Vlad_pris Data 12 aprilie 2024 16:07:31
Problema Asmax Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
const int n_max=16001;
vector<int> graf[n_max];
int val[n_max];
bool vizitat[n_max];
int costmax[n_max];
void dfs(int node)
{
    vizitat[node]=true;
    costmax[node]=val[node];
    for(int vecin : graf[node])
    {
        if(!vizitat[vecin])
        {
            dfs(vecin);
            if(costmax[vecin]<0)
                costmax[node]+=costmax[vecin];
        }
            
    }
}
int main()
{
    int n;
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>val[i];
    }
    for(int i=1;i<=n-1;i++)
    {
        int a,b;
        fin>>a>>b;
        graf[a].push_back(b);
        graf[b].push_back(a);
    }

    dfs(1);
    int asmax= -999999;
    for(int i=1;i<=n;i++)
        asmax=max(costmax[i],asmax);
    fout<<asmax;
    return 0;
}