Pagini recente » Cod sursa (job #2303262) | Cod sursa (job #452609) | Cod sursa (job #1079155) | Cod sursa (job #2951626) | Cod sursa (job #1635190)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
const int Nmax = 16005 , oo = -100000000;
int n, m, cost[Nmax], sol = oo, Sum[Nmax];
vector <int> G[Nmax];
void Print()
{
g<<sol<<'\n';
}
void Solve(int nod, int tata)
{
for(int i = 0; i <(int) G[nod].size(); i++)
{
int Vecin = G[nod][i];
if(Vecin != tata)
{
Solve(Vecin, nod);
}
}
if(Sum[nod] + cost[nod] > 0) Sum[tata] += Sum[nod] + cost[nod];
}
void Read()
{
f>>n;
for(int i = 1; i <= n; i++) f>>cost[i];
for(int i = 1; i < n; i++)
{
int x, y;
f>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
}
int main()
{
Read();
Solve(1,0);
for(int i = 1; i <= n; i++)
{
if(Sum[i] + cost[i] > sol) sol = Sum[i] + cost[i];
}
Print();
return 0;
}