Pagini recente » Cod sursa (job #1084641) | Cod sursa (job #467499) | Cod sursa (job #1439269) | Cod sursa (job #2868287) | Cod sursa (job #2831115)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<vector<int>> adj;
vector<int> cost, sumNod;
vector<bool> viz;
int n;
void initVect()
{
viz.resize(n + 1, 0);
cost.resize(n + 1);
sumNod.resize(n + 1);
adj.resize(n + 1);
}
void Dfs(int x)
{
int aux;
viz[x] = 1;
sumNod[x] = cost[x];
for (auto i : adj[x])
if (viz[i] == 0)
{
Dfs(i);
aux = sumNod[x] + sumNod[i];
if (sumNod[x] < aux)
sumNod[x] = aux;
}
}
void Citire()
{
int i, x, y;
fin >> n;
initVect();
for (i = 1; i <= n; i++)
{
fin >> x;
cost[i] = x;
}
for (i = 1; i < n; i++)
{
fin >> x >> y;
adj[x].push_back(y);
adj[y].push_back(x);
}
}
void Rezolva()
{
int i, suMax = -INT_MAX;
Dfs(1);
for (i = 1; i <= n; i++)
if(suMax < sumNod[i])
suMax = sumNod[i];
fout<<suMax;
}
int main()
{
Citire();
Rezolva();
return 0;
}