Pagini recente » Cod sursa (job #1211463) | Cod sursa (job #2520596) | Cod sursa (job #472672) | Cod sursa (job #1309061) | Cod sursa (job #1841058)
#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,maxim;
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){
dfs(fiu);
D[nod]+=D[fiu];
}
}
D[nod]+=v[nod];
maxim = max(maxim, D[nod]);
}
int main(){
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i];
}
for(i=1;i<n;i++){
fin>>a>>b;
L[a].push_back(b);
L[b].push_back(a);
}
maxim = -1000000000;
dfs(1);
fout<<maxim;
return 0;
}