Pagini recente » Cod sursa (job #2475231) | Cod sursa (job #36787) | Cod sursa (job #1608410) | Cod sursa (job #2958390) | Cod sursa (job #1888521)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<int> a[20001];
int c[20001],n,Max=-999999;
bool v[20001];
int dfs(int k){
int x,i,w;
x=c[k];
v[k]=1;
for(i=0;i<a[k].size();i++)
if(!v[a[k][i]]){
w=dfs(a[k][i]);
if(w>0)
x+=w;
}
Max=max(Max,x);
return x;
}
int main(){
int i,j,h;
fin>>n;
for(i=1;i<=n;i++)
fin>>c[i];
for(h=1;h<=n;h++){
fin>>i>>j;
a[i].push_back(j);
a[j].push_back(i);
}
fin.close();
dfs(1);
fout<<Max;
fout.close();
return 0;
}