Pagini recente » Cod sursa (job #662789) | Cod sursa (job #789936) | Cod sursa (job #1322130) | Cod sursa (job #2969942) | Cod sursa (job #1221300)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("asmax.in");
ofstream fout ("asmax.out");
vector <int> l[16010];
int f[16010],v[16010],d[16010],i,n,x,y,maxim;
void dfs (int nod) {
f[nod]=1;
d[nod]=v[nod];
for (int i=0;i<l[nod].size();i++) {
if (f[l[nod][i]]==0) {
dfs(l[nod][i]);
if (d[l[nod][i]]>0)
d[nod]+=d[l[nod][i]];
}
}
}
int main () {
fin>>n;
for (i=1;i<=n;i++)
fin>>v[i];
for (i=1;i<n;i++) {
fin>>x>>y;
l[x].push_back(y);
l[y].push_back(x);
}
dfs(1);
for (i=1;i<=n;i++)
if (d[i]>maxim)
maxim=d[i];
fout<<maxim<<"\n";
return 0;
}