Cod sursa(job #1067276)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 26 decembrie 2013 17:18:04
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream>
#include<vector>
#define maxn 16007
using namespace std;
ifstream fi("asmax.in");
ofstream fo("asmax.out");

vector <int> a[maxn];
int v[maxn],suma[maxn];
int i,n,x,y,maxim;
bool viz[maxn];

void dfs(int nod){
     int i,k=0,nr=a[nod].size();
     viz[nod]=1;
     
     for(i=0;i<nr;i++)
        if(!viz[a[nod][i]]){
                            dfs(a[nod][i]);
                            if(suma[a[nod][i]]>0) k+=suma[a[nod][i]];
                           }

     suma[nod]=v[nod]+k;
}

int main(){
    fi>>n;
    
    for(i=1;i<=n;i++) fi>>v[i];

    for(i=1;i<n;i++){
                     fi>>x>>y;
                     a[x].push_back(y);
                     a[y].push_back(x);
                    }
    
    dfs(1);
    
    maxim=suma[1]; 
    for(i=1;i<=n;i++) if(suma[i]>maxim) maxim=suma[i];
    fo<<maxim;
    
    fi.close();
    fo.close();
    return 0;
}