Pagini recente » Cod sursa (job #2823504) | Cod sursa (job #1074791) | Cod sursa (job #1108482) | Istoria paginii runda/simulare-baraj-2008-ziua-2 | Cod sursa (job #832443)
Cod sursa(job #832443)
#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;
}