Pagini recente » Cod sursa (job #3162195) | Cod sursa (job #87048) | Cod sursa (job #2676106) | Cod sursa (job #2061495) | Cod sursa (job #2831093)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("srevni.in");
ofstream fout("srevni.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[x].push_back(y);
}
}
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;
}