Pagini recente » Cod sursa (job #678477) | Cod sursa (job #277518) | Cod sursa (job #970867) | Cod sursa (job #1657323) | Cod sursa (job #1216630)
#include<fstream>
#include<vector>
using namespace std;
int sp, n, maxim, v[16003], D[16003], U[16003], x, i, y;
vector <int> L[16003];
void dfs(int nod){
D[nod]=v[nod];
U[nod] = 1;
for(int i=0; i<L[nod].size(); i++){
if(U[ L[nod][i] ] == 0){
dfs(L[nod][i]);
if(D[L[nod][i]]>0)
D[nod]+=D[L[nod][i]];
}
}
if(D[nod]>maxim)
maxim=D[nod];
}
ifstream in("asmax.in");
ofstream out("asmax.out");
int main(){
in>>n;
maxim=-9999999;
for(i=1; i<=n; i++)
in>>v[i];
for(i=1; i<=n; i++){
in>>x>>y;
L[x].push_back(y);
L[y].push_back(x);
}
dfs(1);
out<<maxim;
return 0;
}