Pagini recente » Cod sursa (job #2874574) | Cod sursa (job #2070208) | Cod sursa (job #1883213) | Cod sursa (job #670646) | Cod sursa (job #2049161)
#define DM 16001
#include <climits>
#include <fstream>
#include <vector>
using namespace std;
ifstream fi ("asmax.in");
ofstream fo ("asmax.out");
int n, val[DM], s[DM], a, b, mx = INT_MIN;
vector <int> v[DM];
void dfs(int nod, int p)
{
for (int i = 0; i < v[nod].size(); ++i)
if (v[nod][i] != p)
dfs(v[nod][i], nod);
if (s[nod] > 0)
s[p]+=s[nod];
}
int main()
{
fi >> n;
for (int i = 1; i <= n; ++i)
{
fi >> val[i];
s[i] = val[i];
}
for (int i = 1; i < n; ++i)
{
fi >> a >> b;
v[a].push_back(b);
v[b].push_back(a);
}
for (int i = 0; i < v[1].size(); ++i)
dfs(v[1][i], 1);
for (int i = 1; i <= n; ++i)
mx = max(mx, s[i]);
fo << mx;
return 0;
}