Cod sursa(job #1775328)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 10 octombrie 2016 11:17:05
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 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;

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

    for(it=muc[k].begin(); it!=muc[k].end(); it++  ){
        if(viz[*it]==1){
            continue;
        }
        viz[*it]=1;
        sact=dfs(*it);

        if(sact<0){
            continue;
        }
        s[k]+=sact;

    }
    smax=max(s[k],smax);
    return s[k];
}

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

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

    scanf("%d",&n);

    for(i=1;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);
    }

    viz[1]=1;
    dfs(1);

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