Cod sursa(job #1554091)

Utilizator elevenstrArina Raileanu elevenstr Data 20 decembrie 2015 21:31:44
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
#define MAX 16008
long long  val[MAX],viz[MAX],sumsub[MAX],maxi=-100000;
vector <long long > v[MAX];
void dfs(long long  nod)
{   viz[nod]=1;
    sumsub[nod]=val[nod];
    for(int i=0;i<v[nod].size();i++)
        if(!viz[v[nod][i]])
    {   dfs(v[nod][i]);
        if(sumsub[v[nod][i]]>0)
            sumsub[nod]+=sumsub[v[nod][i]];
    }
      if(sumsub[nod]>maxi)maxi=sumsub[nod];
}
int main()
{  long long n,j,k;
   in>>n;
   for(int i=1;i<=n;i++)
    in>>val[i];
    for(int i=1;i<n;i++)
    {   long long  a,b;
        in>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    dfs(1);
    out<<maxi;
    return 0;
}