Pagini recente » Cod sursa (job #2785638) | Cod sursa (job #49109) | Cod sursa (job #440641) | Cod sursa (job #1636859) | Cod sursa (job #1841047)
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<int >L[16005];
int D[16005],v[16005],sol[16005];
int x,y,n,m,a,b,q,i;
void dfs(int nod){
sol[nod]=1;
for(int i=0;i<L[nod].size();i++){
int fiu=L[nod][i];
if(sol[fiu]==0){
sol[fiu]=1;
dfs(fiu);
}
}
for(int i=0;i<L[nod].size();i++){
int fiu=L[nod][i];
if(D[fiu]>0){
D[nod]+=D[fiu];
}
}
D[nod]+=v[nod];
}
int main(){
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i];
}
long long maxim;
maxim=-1;
for(i=1;i<n;i++){
fin>>a>>b;
L[a].push_back(b);
L[b].push_back(a);
}
dfs(1);
for(i=1;i<=n;i++){
if(D[i]>=maxim){
maxim=D[i];
}
}
fout<<maxim;
return 0;
}