Pagini recente » Cod sursa (job #776855) | Cod sursa (job #1143951) | Cod sursa (job #900430) | Cod sursa (job #684775) | Cod sursa (job #681495)
Cod sursa(job #681495)
#include<fstream>
#include<vector>
#define pb push_back
#define DIM 16001
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
int N, maxim;
vector< int > G[DIM];
bool viz[DIM];
int Val[DIM];
void DFs(int node)
{
viz[node] = 1;
for(vector< int >:: iterator it = G[node].begin(); it != G[node].end(); ++it)
if( !viz[*it] )
{
DFs(*it);
if( Val[*it] > 0 )
Val[node] += Val[*it];
}
}
int main()
{
int i, x, y;
in >> N;
for(i = 1; i <= N; i++)
in >> Val[i];
for(i = 1; i <= N-1; i++)
{
in >> x >> y;
G[x].pb(y);
G[y].pb(x);
}
DFs(1);
maxim = -1000000;
for(i = 1; i <= N; i++)
if( maxim < Val[i] )
maxim = Val[i];
out << maxim;
return 0;
}