Cod sursa(job #1426125)

Utilizator Vladut-Vlad Panait Vladut- Data 28 aprilie 2015 23:24:23
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <vector>

#define maxn 16005

using namespace std;

ifstream fin("asmax.in");
ofstream fout("asmax.out");

int n, val[maxn], a, b, sum[maxn];
bool visited[maxn];
vector<int> G[maxn];

void dfs(int nod)
{
    sum[nod]=val[nod];
    visited[nod]=1;

    for(int i=0; i<G[nod].size(); i++)
    {
        int x=G[nod][i];
        if(!visited[x])
        {
            dfs(x);
            if(sum[x]>0)
            {
                sum[nod]+=sum[x];
            }
        }
    }
}

int main()
{
    fin >> n;

    for(int i=1; i<=n; i++)
    {
        fin >> val[i];
    }

    for(int i=1; i<n; i++)
    {
        fin >> a >> b;
        G[a].push_back(b);
        G[b].push_back(a);
    }

    dfs(1);

    int maxim=0;
    for(int i=1; i<=n; i++)
    {
        if(maxim<sum[i])
        {
            maxim=sum[i];
        }
    }

    fout << maxim;

    return 0;
}