Pagini recente » Cod sursa (job #501844) | Cod sursa (job #3191366) | Cod sursa (job #1793066) | Cod sursa (job #1732679) | Cod sursa (job #2279690)
#include <fstream>
#include <vector>
#define inf 1005
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
const int Nmax = 16005;
vector<int> A[Nmax];
int DFS (int nod, vector<int>&v, vector<int>&best, vector<bool>&viz)
{
viz[nod] = 1;
for (auto i = 0; i < A[nod].size(); i++)
{
int nod_curent = A[nod][i];
if (viz[nod_curent])
continue;
int x = DFS(nod_curent, v, best, viz);
if (x > 0)
best[nod] = best[nod] + x;
}
return best[nod];
}
int main()
{
int n, maxim = -inf;
in >> n;
vector<int> v(n + 1);
vector<int> best(n + 1);
vector<bool> viz(n + 1);
for (int i = 1; i <= n; i++)
in >> best[i];
for (int i = 1; i <= n; i++)
{
int x, y;
in >> x >> y;
A[x].push_back(y);
A[y].push_back(x);
}
DFS(1, v, best, viz);
for (int i = 1; i <= n; i++)
maxim = max(maxim, best[i]);
out << maxim;
return 0;
}