Pagini recente » Cod sursa (job #688379) | Cod sursa (job #237253) | Cod sursa (job #445658) | Cod sursa (job #480665) | Cod sursa (job #1067276)
#include<fstream>
#include<vector>
#define maxn 16007
using namespace std;
ifstream fi("asmax.in");
ofstream fo("asmax.out");
vector <int> a[maxn];
int v[maxn],suma[maxn];
int i,n,x,y,maxim;
bool viz[maxn];
void dfs(int nod){
int i,k=0,nr=a[nod].size();
viz[nod]=1;
for(i=0;i<nr;i++)
if(!viz[a[nod][i]]){
dfs(a[nod][i]);
if(suma[a[nod][i]]>0) k+=suma[a[nod][i]];
}
suma[nod]=v[nod]+k;
}
int main(){
fi>>n;
for(i=1;i<=n;i++) fi>>v[i];
for(i=1;i<n;i++){
fi>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
dfs(1);
maxim=suma[1];
for(i=1;i<=n;i++) if(suma[i]>maxim) maxim=suma[i];
fo<<maxim;
fi.close();
fo.close();
return 0;
}