Pagini recente » Cod sursa (job #1034734) | Cod sursa (job #1018259) | Cod sursa (job #3360429) | Cod sursa (job #3359692) | Cod sursa (job #3359932)
#include <fstream>
#include <vector>
#define MAX 16003
using namespace std;
ifstream fin ("asmax.in");
ofstream fout ("asmax.out");
int v[MAX];
vector<int> adj[MAX];
int dp[MAX];
void dfs (int x, int parent) {
dp[x]=v[x];
for (int i:adj[x]) {
if (i!=parent) {
dfs(i, x);
if (dp[i]>0) {
dp[x]+=dp[i];
}
}
}
}
int main() {
int n,i,a,b,maxim;
fin>>n;
for (i=1; i<=n; i++) {
fin>>v[i];
}
for (i=0; i<n-1; i++) {
fin>>a>>b;
adj[a].push_back(b);
adj[b].push_back(a);
}
dfs(1,0);
maxim=dp[1];
for (i=2; i<=n; i++) {
if (dp[i]>maxim) {
maxim=dp[i];
}
}
fout<<maxim<<endl;
return 0;
}