Pagini recente » Cod sursa (job #508037) | Cod sursa (job #158506) | Cod sursa (job #2943516) | preoni-2007/runda-finala/regulament | Cod sursa (job #2138759)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("asmax.in");
ofstream fout ("asmax.out");
vector <int> L[16010];
int f[16010],viz[16010],s,c[16010],k,n,i,x,y,nod,D[16010],sol[16010],t,maxim;
void dfs(int nod){
viz[nod]=1;
for(int i=0;i<L[nod].size();i++){
int nodv=L[nod][i];
if(viz[nodv]!=1){
dfs(nodv);
if(D[nod]+D[nodv]>=D[nod]){
D[nod]+=D[nodv];
}
}
}
if(D[nod]>maxim)
maxim=D[nod];
}
int main(){
fin>>n;
maxim=-(1<<29);
for(i=1;i<=n;i++){
fin>>D[i];
maxim=max(D[i],maxim);
}
for(i=1;i<n;i++){
fin>>x>>y;
L[x].push_back(y);
L[y].push_back(x);
}
if(maxim<=0){
fout<<maxim;
return 0;
}
dfs(1);
fout<<maxim;
}