Cod sursa(job #2145367)

Utilizator filip.mihalutMihalut Filip filip.mihalut Data 27 februarie 2018 12:21:37
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
#define Nmax 16005

using namespace std;

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

int n,x,y,m,Max,val[Nmax],i,seen[Nmax];
vector < int > v[Nmax];

inline void read()
{
    f >> n;
    for(i = 1;i <= n;i++)
        f >> val[i];

    for(i = 2;i <= n;i++)
    {
        f >> x >> y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
}

inline void dfs(int nod)
{
    int l = v[nod].size() , s = 0,next_nod;
    for(int i = 0;i < l;i++)
    {
        next_nod = v[nod][i];
        if(not seen[next_nod])
        {
            seen[next_nod] = 1;
            dfs(next_nod);
            if(val[next_nod] > 0)
                s += val[next_nod];
        }
    }
    val[nod] += s;
    Max = max(val[nod], Max);
}

int main()
{
    read();
    Max = val[1];
    seen[1] = 1;
    dfs(1);
    g << Max;
    return 0;
}