Pagini recente » Cod sursa (job #1077097) | Cod sursa (job #2573760) | Cod sursa (job #2966534) | Cod sursa (job #2075942) | Cod sursa (job #2952572)
#include <fstream>
#include <vector>
#include <bitset>
using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
// zona declarare
const int MAX = 16e3 + 1;
vector <int> g[MAX];
int dp[MAX] , n , maxim , v[MAX];
bitset <MAX> b;
// zona declarare
int dfs(int x){
int l = g[x].size();
b[x] = 1;
for(int i = 0 ; i < l ; i++){
int val = g[x][i];
if(!b[val]){
int y = dfs(val);
if( y > 0 ) dp[x] += y;
}
}
return dp[x];
}
int main(){
cin >> n;
for(int i = 1 ; i <= n ; i++){
cin >> v[i];
dp[i] = v[i];
}
n--;
int x , y;
while(n--){
cin >> x >> y;
g[x].push_back(y);
g[y].push_back(x);
}
dfs(1);
cout << dp[1];
return 0;
}