Cod sursa(job #946249)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 4 mai 2013 10:34:11
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 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[17002];
int v[16002],start,x,y,n;
int best[16002],b,s;
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]; s=1;
    for(int i=2;i<=n;++i) {in>>v[i]; if(v[i]>start) start=v[i],s=i;}
    for(int i=1;i<n;++i ) {in>>x>>y; l[x].push_back(y); l[y].push_back(x);}
    b=-oo;
    dfs(s);
    for(int i=1;i<=n;++i) if(b<best[i]) b=best[i];
    out<<b<<'\n';
    return 0;
}