Cod sursa(job #1775322)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 10 octombrie 2016 11:05:31
Problema Asmax Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#define N 16500

using namespace std;

int v[N];
vector <int> muc[N];
int s[N];
int viz[N];
int smax=-1001;

void dfs(int k){
    vector <int>::iterator it;

    for(it=muc[k].begin(); it!=muc[k].end(); it++  ){
        if(viz[*it]==1){
            continue;
        }
        s[*it]= max(s[*it], s[k]+v[*it] );
        smax=max(smax,s[*it]);
        viz[*it]=1;
        dfs(*it);
    }

}

int main(){
    int n,i;
    int x,y;

    freopen("asmax.in","r",stdin);
    freopen("asmax.out","w",stdout);

    scanf("%d",&n);

    for(i=0;i<n;i++){
        scanf("%d",&v[i]);
        s[i]=v[i];
    }

    for(i=0;i<n-1;i++){
        scanf("%d%d",&x,&y);
        muc[x].push_back(y);
        muc[y].push_back(x);
    }

    dfs(1);

    printf("%d",smax);
    return 0;
}