Pagini recente » Cod sursa (job #3253475) | Cod sursa (job #2478686) | Cod sursa (job #1871716) | Cod sursa (job #274972) | Cod sursa (job #2766327)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n;
vector<int> v[16016];
int dp[16016];
void dfs(int fiu, int tata)
{
for(int it = 0; it != v[fiu].size(); it++)
{
int vecin = v[fiu][it];
if(vecin != tata)
{
dfs(vecin,fiu);
if(dp[fiu] + dp[vecin] < dp[fiu])
continue;
dp[fiu] += dp[vecin];
}
}
}
int main()
{
fin >> n;
int ans = INT_MIN;
for(int i = 1; i <= n; i ++)
{
fin >> dp[i];
ans = max(ans, dp[i]);
}
for(int i = 1; i < n; i ++)
{
int u, w;
fin >> u >> w;
v[u].push_back(w);
v[w].push_back(u);
}
dfs(1,0);
for(int i = 1; i <= n; i ++)
{
ans = max(ans, dp[i]);
}
fout << ans << '\n';
}