Pagini recente » Cod sursa (job #1217603) | Cod sursa (job #3145669) | Cod sursa (job #2387418) | Cod sursa (job #349996) | Cod sursa (job #1133434)
#include<fstream>
#include<iostream>
#include<vector>
using namespace std;
int N,val[16010],start,maxim=-99999999;
vector <int> v[16010];
void citire() {
ifstream in("asmax.in");
int i,x,y;
in>>N;
for(i=1;i<=N;i++)
in>>val[i];
for(i=1;i<=N-1;i++) {
in>>x>>y;
if(i==1)
start=x;
v[x].push_back(y);
}
in.close();
}
void dfs(int nod) {
int vecin,i;
for(i=0;i<v[nod].size();i++) {
vecin=v[nod][i];
dfs(vecin);
// cout<<nod<<' '<<val[nod]<<val[vecin]<<'\n';
if(val[vecin]>0)
val[nod]+=val[vecin];
if(val[nod]>maxim)
maxim=val[nod];
}
}
void solve() {
dfs(start);
}
void afisare() {
ofstream out("asmax.out");
out<<maxim<<'\n';
out.close();
}
int main() {
citire();
solve();
afisare();
return 0;
}