Pagini recente » Cod sursa (job #705828) | Cod sursa (job #3316110) | Cod sursa (job #1630320) | Cod sursa (job #2011043) | Cod sursa (job #3323258)
#include <iostream>
#include <cstring>
#include <cmath>
#include <fstream>
#include <bitset>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int dp[16005], n, v[16005];
vector<int> G[16005];
bitset<16002> viz;
void DFS(int x)
{
viz[x] = true;
for(int w : G[x])
if (!viz[w])
{
DFS(w);
if (dp[w] > 0) dp[x] += dp[w];
}
}
int main()
{
int i, j;
fin >> n;
for (i = 1; i <= n; i++)
fin >> v[i];
for (int t = 1; t < n; t++)
{
fin >> i >> j;
G[i].push_back(j);
G[j].push_back(i);
}
for (i = 1; i <= n; i++)
dp[i] = v[i];
DFS(1);
int ans = INT_MIN;
for (i = 1; i <= n; i++)
ans = max(ans, dp[i]);
fout << ans;
return 0;
}