Cod sursa(job #1879094)

Utilizator NicusorTelescu Nicolae Nicusor Data 14 februarie 2017 18:32:01
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#include <vector>

using namespace std;

vector <int> muchii[16001];
int v[16001],maxim=-1000000,frunza[16001];
bool pass[16001];

int DFS(int x,int sum)
{
    pass[x]=1;
    int l=muchii[x].size();
    for (int i=0;i<l;++i)
        if (pass[muchii[x][i]]==0)
        {
            int x1=DFS(muchii[x][i],0);
            if (x1>0) sum+=x1;
        }
    sum+=v[x];
    if (sum>maxim) maxim=sum;
    return sum;
}

int main()
{
    freopen("asmax.in","r",stdin);
    freopen("asmax.out","w",stdout);
    int n;
    scanf("%d\n",&n);
    for (int i=1;i<=n;++i)
        scanf("%d ",&v[i]);
    for (int i=1;i<n;++i)
    {
        int a,b;
        scanf("%d %d",&a,&b);
        muchii[a].push_back(b);
        muchii[b].push_back(a);
        frunza[a]++;
        frunza[b]++;
    }
    DFS(1,0);
    printf("%d ",maxim);
}