Pagini recente » Cod sursa (job #1205715) | Cod sursa (job #1274462) | Cod sursa (job #1823813) | Cod sursa (job #1347715) | Cod sursa (job #714326)
Cod sursa(job #714326)
#include<cstdio>
#include<algorithm>
#include<vector>
#define infile "asmax.in"
#define outfile "asmax.out"
#define n_max 16005
#define ll long long
#define nxt *it
#define INF 1<<30
#define pb push_back
#define FOR(g) \
for(vector <int> ::iterator it = g.begin(); it!=g.end(); ++it)
using namespace std;
vector < int > v[n_max];
int Value[n_max];
int N;
ll Sol = -INF;
void citeste()
{
freopen(infile,"r",stdin);
int x, y;
scanf("%d", &N);
for(int i=1;i<=N;i++)
scanf("%d", &Value[i]);
for(int i=1; i<N; ++i){
scanf("%d %d",&x, &y);
v[x].pb(y);
v[y].pb(x);
}
fclose(stdin);
}
ll DF(int x, int tx)
{
ll Bst = Value[x];
FOR(v[x])
if(nxt != tx)
Bst += DF(nxt, x);
Bst = max(Bst, (ll) Value[x]);
Sol = max(Sol, Bst);
return Bst;
}
void afiseaza()
{
freopen(outfile,"w",stdout);
printf("%lld\n", Sol);
fclose(stdout);
}
int main()
{
citeste();
DF(1, 0);
afiseaza();
return 0;
}