Cod sursa(job #928731)

Utilizator mazaandreiAndrei Mazareanu mazaandrei Data 26 martie 2013 17:32:55
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <vector>
#include <algorithm>
#define oo (1<<30)
using namespace std;
ifstream in("asmax.in"); ofstream out("asmax.out");
vector <int> l[16002];
int v[16002],start,x,y,n;
int best[16002],b;
bool viz[16002];
void dfs(int x){
    vector <int> :: iterator it=l[x].begin();
    best[x]=v[x];
    viz[x]=true;
    for(;it!=l[x].end();++it){
        if(!viz[(*it)]){
            dfs((*it));
            best[x]=max(best[x],best[x]+best[(*it)]);
        }
    }
}
int main(){
    in>>n>>v[1]; start=v[1];
    for(int i=2;i<=n;++i) {in>>v[i]; if(v[i]>start) start=v[i];}
    for(int i=1;i<n;++i ) {in>>x>>y; l[x].push_back(y); l[y].push_back(x);}
    dfs(start);
    b=best[1];
    for(int i=2;i<=n;++i) if(b<best[i]) b=best[i];
    out<<b<<'\n';
    return 0;
}