Cod sursa(job #2050366)

Utilizator georgerapeanuRapeanu George georgerapeanu Data 28 octombrie 2017 09:36:26
Problema Asmax Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
vector<int> G[16005];
int N;
int V[16005];
int dfs(int nod,int tata)
{
    int sum1=V[nod],sum2=0;
    for(auto it:G[nod])
        if(it!=tata)
            {int tmp=dfs(it,nod);sum1=max(sum1,sum1+tmp);sum2=max(sum2,tmp);}
    return max(sum1,sum2);
}
int main()
{
    freopen("asmax.in","r",stdin);
    freopen("asmax.out","w",stdout);
    cin>>N;
    for(int i=1;i<=N;i++)cin>>V[i];
    for(int i=1;i<N;i++)
    {
        int x,y;
        cin>>x>>y;
        G[x].push_back(y);
        G[y].push_back(x);
    }
    cout<<dfs(1,0);
    return 0;
}