Pagini recente » Cod sursa (job #1477116) | Cod sursa (job #1148491) | Cod sursa (job #801303) | Cod sursa (job #18475) | Cod sursa (job #3246078)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n, mini, s[16005], fr[16005], a[16005], maxi;
vector<int> v[16005];
void dfs(int nod)
{
s[nod] = a[nod]; fr[nod] = 1;
for(auto x : v[nod])
if(!fr[x])
{
dfs(x);
if(s[x] > 0)
s[nod] += s[x];
}
maxi = max(maxi, s[nod]);
}
int main()
{
f >> n;
for(int i = 1; i <= n; i ++)
f >> a[i];
for(int i = 1; i < n; i ++)
{
int x, y; f >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
g << maxi;
return 0;
}