Pagini recente » Cod sursa (job #2383304) | Cod sursa (job #399597) | Cod sursa (job #2522789) | Cod sursa (job #846260) | Cod sursa (job #846905)
Cod sursa(job #846905)
#include<fstream>
#include<vector>
using namespace std;
ifstream f("asmax.in"); ofstream g("asmax.out");
vector <int> L[16001];
int n, a, b, i, maxim=-16000000;
int sum[16001], x[16001];
bool viz[16001];
void dfs(int nod)
{ sum[nod]=x[nod];
viz[nod]=true;;
vector <int> :: iterator it=L[nod].begin(), sf=L[nod].end();
for( ;it != sf; ++it)
if(!viz[*it])
{ dfs(*it);
if(sum[*it]>0) sum[nod]+=sum[*it];
}
}
int main()
{ f>>n;
for(i=1;i<=n;i++) f>>x[i];
for(i=1;i<n;i++)
f>>a>>b, L[a].push_back(b), L[b].push_back(a);
dfs(1);
for(i=1; i<=n; ++i) if(maxim<sum[i]) maxim=sum[i];
g<<maxim<<"\n"; return 0;
}