Pagini recente » Cod sursa (job #2622176) | Cod sursa (job #2915210) | Cod sursa (job #1007762) | Cod sursa (job #3195120) | Cod sursa (job #748211)
Cod sursa(job #748211)
#include <fstream>
#include <vector>
#define pb push_back
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
const int N=17000;
int v[N],sol[N],answer,n;
bool vis[N];
vector <int> edge[N];
void read(){
int i,x,y;
in>>n;
for(i=1;i<=n;++i){
in>>v[i];
}
for(i=1;i<n;++i){
in>>x>>y;
edge[x].push_back(y);
edge[y].push_back(x);
}
}
void df(int x){
int neighbour,i,s=0;
vis[x]=true;
for(i=0;i<edge[x].size();++i){
neighbour=edge[x][i];
if(vis[neighbour]==false){
df(neighbour);
}
if(sol[neighbour]>0)
s+=sol[neighbour];
}
sol[x]=s+v[x];
if(sol[x]>answer)
answer=sol[x];
}
void solve(){
df(1);
out<<answer;
}
int main(){
read();
solve();
return 0;
}