Cod sursa(job #1432715)

Utilizator dragangabrielDragan Andrei Gabriel dragangabriel Data 9 mai 2015 14:04:59
Problema Asmax Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul I, Semestrul 2 Marime 0.79 kb
#include<cstdio>
#include<algorithm>
#include<vector>
#define INF 1000000000
using namespace std;
int n,i,k,a[16006],rez[16006],rezultat,x,y;
vector<int>v[16006];
bool viz[16006];
 
void parcurge(int x)
{
    viz[x]=true;
    rez[x]=a[x];
    for (int j=0;j<v[x].size();j++) if (!viz[v[x][j]])
        {
            parcurge(v[x][j]);
            rez[x]=max(rez[x],rez[v[x][j]]+rez[x]);
        }
}
 
int main()
{
    freopen("asmax.in","r",stdin);
    freopen("asmax.out","w",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;i++) scanf("%d",&a[i]),rez[i]=-INF;
    for (i=1;i<=n-1;i++) scanf("%d %d",&x,&y),v[x].push_back(y),v[y].push_back(x);
    parcurge(1);
    rezultat=-INF;
    for (i=1;i<=n;i++) rezultat=max(rezultat,rez[i]);
    printf("%d\n",rezultat);
    return 0;
}