Cod sursa(job #2138759)

Utilizator luanastLuana Strimbeanu luanast Data 21 februarie 2018 21:03:46
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("asmax.in");
ofstream fout ("asmax.out");
vector <int> L[16010];
int f[16010],viz[16010],s,c[16010],k,n,i,x,y,nod,D[16010],sol[16010],t,maxim;
void dfs(int nod){
    viz[nod]=1;
    for(int i=0;i<L[nod].size();i++){
        int nodv=L[nod][i];
        if(viz[nodv]!=1){
            dfs(nodv);
            if(D[nod]+D[nodv]>=D[nod]){
                D[nod]+=D[nodv];
            }
        }
    }
    if(D[nod]>maxim)
        maxim=D[nod];
}

int main(){
    fin>>n;
    maxim=-(1<<29);
    for(i=1;i<=n;i++){
        fin>>D[i];
        maxim=max(D[i],maxim);
    }
    for(i=1;i<n;i++){
        fin>>x>>y;
        L[x].push_back(y);
        L[y].push_back(x);
    }
    if(maxim<=0){
        fout<<maxim;
        return 0;
    }
    dfs(1);
    fout<<maxim;
}