Cod sursa(job #1189200)

Utilizator xtreme77Patrick Sava xtreme77 Data 21 mai 2014 19:43:40
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>
#include <vector>
const int MAX = 16010;
using namespace std;
int viz[MAX],sum[MAX];
vector <int> gr[MAX];
int maxim=0,n;
void dfs(int nod);
int main()
{
    freopen("asmax.in","r",stdin);
    freopen("asmax.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;++i)scanf("%d",sum+i);
    for(int i=1;i<n;++i){
        int x,y;
        scanf("%d%d",&x,&y);
        gr[x].push_back(y);
        gr[y].push_back(x);
    }
    dfs(1);
    printf("%d\n",maxim);
    return 0;
}
void dfs(int nod){
    vector <int> ::iterator it;
    viz[nod]=1;
    for(it = gr[nod].begin();it!=gr[nod].end();++it){
        if(!viz[*it]){
            dfs(*it);
            if(sum[*it]>0)sum[nod]+=sum[*it];
        }
        if(sum[nod]>maxim)maxim=sum[nod];

    }
}