Pagini recente » Cod sursa (job #1568804) | Cod sursa (job #2124379) | Cod sursa (job #877757) | Cod sursa (job #1860731) | Cod sursa (job #1060039)
#include<fstream>
#include<vector>
#define INF -10000000
using namespace std;
fstream in ( "asmax.in" , ios::in ),
out( "asmax.out", ios::out);
vector <int> copii[16001];
int n, v[16001], a, b, m = INF ;
void dfs( int );
int main(){
in >> n;
for( int i=1; i<=n; i++){
in >> v[i];
}
for( int i=1; i<n; i++){
in >> a >> b;
copii[a].push_back( b );
}
dfs( 1 );
out << v[1] <<'\n';
return 0;
}
void dfs( int x ){
while( !copii[x].empty() ){
if ( v[ copii[x].back() ] > 0 ){
if( v[x] >= 0 )
v[x] += v[ copii[x].back() ];
else
v[x] = v[ copii[x].back() ];
}
copii[x].pop_back();
}
}