Pagini recente » Cod sursa (job #1335256) | Cod sursa (job #306303) | Cod sursa (job #1223393) | Cod sursa (job #1831947) | Cod sursa (job #1889729)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector <int> v[16001];
int viz[16001],n,val[16001],sum[16001];
void dfs(int nod)
{
viz[nod]=1;
sum[nod]=val[nod];
for(int i=0;i<v[nod].size();i++){
if(!viz[v[nod][i]]){
dfs(v[nod][i]);
if(sum[v[nod][i]]>=0){
sum[nod]+=sum[v[nod][i]];
}
}
}
}
int main()
{
f>>n;
int x,y;
for(int i=1;i<=n;i++) f>>val[i];
for(int i=1;i<n;i++){
f>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
int maxim=0;
for(int i=1;i<=n;i++){
dfs(i);
for(int j=1;j<=n;j++) if(sum[j]>maxim) maxim=sum[j];
}
g<<maxim;
return 0;
}