Pagini recente » Cod sursa (job #1743084) | Cod sursa (job #2281225) | Cod sursa (job #2772123) | Cod sursa (job #2050816) | Cod sursa (job #2940521)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("asmax.in");
ofstream cout("asmax.out");
int i, j, n, m, x, y, nr, minim, k, sol;
bool a[16002];
int maxim[16002], s[16002], v[16002];
vector <int> L[16002];
void dfs(int nod){
a[nod]=1;
s[nod]=v[nod];
for(int i=0;i<L[nod].size();i++){
if(a[L[nod][i]]==0){
dfs(L[nod][i]);
if(s[L[nod][i]]>0)
s[nod]+=s[L[nod][i]];
}
}
sol=max(sol, s[nod]);
}
int main() {
cin>>n;
cin>>v[1];
sol=v[1];
for(i=2;i<=n;i++)
cin>>v[i], sol=max(sol, v[i]);
for(i=1;i<n;i++){
cin>>x>>y;
L[x].push_back(y);
L[y].push_back(x);
}
minim=100002;
dfs(1);
cout<<sol;
}