Pagini recente » Cod sursa (job #593495) | Cod sursa (job #2595304) | Cod sursa (job #1129690) | Cod sursa (job #2921685) | Cod sursa (job #535705)
Cod sursa(job #535705)
#include<fstream>
#include<vector>
using namespace std;
ifstream f1 ("asmax.in");
ofstream f2 ("asmax.out");
int A[16005],i,N,a,b,D[16005],S;
bool Viz[16005];
vector<int> V[16005];
void dfs(int nod)
{
Viz[nod] = 1;
vector<int>::iterator it;
for ( it=V[nod].begin() ; it != V[nod].end() ; ++it )
if ( !Viz[*it] ) dfs(*it);
D[nod] = A[nod];
for ( it= V[nod].begin() ; it != V[nod].end() ; ++it )
if ( D[*it] > 0 ) D[nod] += D[*it];
if ( D[nod] > S) S = D[nod];
}
int main ()
{
f1>>N;
for ( i = 1 ; i <= N ; ++i ) f1>>A[i];
for ( i = 1 ; i < N ; ++i )
{
f1>>a>>b;
V[a].push_back(b);
V[b].push_back(a);
}
S = -1<<29;
dfs(1);
f2<<S<<"\n";
return 0;
}