Cod sursa(job #1013182)

Utilizator cat_red20Vasile Ioana cat_red20 Data 20 octombrie 2013 15:12:59
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<fstream>
#include<vector>
#define MAXN 16001
using namespace std;
int cost[MAXN],best[MAXN],viz[MAXN],n;
vector<int>v[MAXN];
ifstream fin("asmax.in");
ofstream fout("asmax.out");

void read()
{
    int x,y;
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>cost[i];
    for(int i=1;i<n;i++)
    {
        fin>>x>>y;
        v[x].push_back(y);
        v[y].push_back(x);
    }
}

void dfs(int nod)
{
    viz[nod]=1;
    best[nod]=cost[nod];
    for(int i=0;i<v[nod].size();i++)
    {
        if(viz[v[nod][i]]==0)
        {
            dfs(v[nod][i]);
            if(best[v[nod][i]]>0)
                best[nod]+=best[v[nod][i]];
        }
    }
}

void sol()
{
    int maxim=-16000000;
    for(int i=1;i<=n;i++)
        if(best[i]>maxim)
            maxim=best[i];
    fout<<maxim;

}

int main()
{
    read();
    dfs(1);
    sol();
    return 0;
}