Pagini recente » Cod sursa (job #1065666) | Cod sursa (job #3038837) | Cod sursa (job #2391880) | Cod sursa (job #1680875) | Cod sursa (job #953455)
Cod sursa(job #953455)
#include<fstream>
#include<vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector<int>L[100001];
int n,m,x,y,i,v[100001],nr,maxim = -1000000000,c[100010],s[100010];
void adancime(int x)
{
v[x]=1;
int sum = 0;
for(int i=0;i<L[x].size();i++)
if(v[L[x][i]]==0) {
adancime(L[x][i]);
if (s[L[x][i]] > 0)
sum += s[L[x][i]];
}
if (c[x] > c[x] + sum)
s[x] = c[x];
else
s[x] = c[x] + sum;
if (s[x] > maxim)
maxim = s[x];
}
int main()
{
f>>n;
for (i=1;i<=n;i++)
f>>c[i];
for(i=1;i<n-1;i++)
{
f>>x>>y;
L[x].push_back(y);
L[y].push_back(x);
}
adancime(1);
g<<maxim;
return 0;
}