Cod sursa(job #2393851)

Utilizator LivcristiTerebes Liviu Livcristi Data 1 aprilie 2019 09:45:36
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>
#define NUM 16005
using namespace std;
vector <int> graf[NUM];
int sum[NUM];
int viz[NUM];
int n, a, b, maxim;
void dfs(int nod)
{
    viz[nod] = 1;
    for(int i = 0; i < graf[nod].size(); ++i)
    {
        int nodA = graf[nod][i];
        if(!viz[nodA])
        {
            dfs(nodA);
            if(sum[nodA] > 0)
                sum[nod] += sum[nodA];
        }
    }
}
int main()
{
    ifstream f("asmax.in");
    ofstream g("asmax.out");
    f >> n;
    for(int i = 1; i <= n; ++i)
        f >> sum[i];
    for(int i = 1; i < n; ++i)
    {
        f >> a >> b;
        graf[a].push_back(b);
        graf[b].push_back(a);
    }
    dfs(1);
    maxim = INT_MIN;
    for(int i = 1; i <= n; ++i)
        if(sum[i] > maxim)
             maxim = sum[i];
    g << maxim;
    f.close();
    g.close();
}