Cod sursa(job #846905)

Utilizator enedumitruene dumitru enedumitru Data 2 ianuarie 2013 22:51:53
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<fstream>
#include<vector>
using namespace std;
ifstream f("asmax.in"); ofstream g("asmax.out");
vector <int> L[16001];
int n, a, b, i, maxim=-16000000;
int sum[16001], x[16001];
bool viz[16001];
void dfs(int nod)
{   sum[nod]=x[nod];
    viz[nod]=true;;
    vector <int> :: iterator it=L[nod].begin(), sf=L[nod].end();
    for( ;it != sf; ++it)
        if(!viz[*it])
        {   dfs(*it);
            if(sum[*it]>0) sum[nod]+=sum[*it];
        }
}
int main()
{   f>>n;
    for(i=1;i<=n;i++) f>>x[i];
    for(i=1;i<n;i++)
        f>>a>>b, L[a].push_back(b), L[b].push_back(a);
    dfs(1);
    for(i=1; i<=n; ++i) if(maxim<sum[i]) maxim=sum[i];
    g<<maxim<<"\n"; return 0;
}