Pagini recente » Cod sursa (job #2263356) | Cod sursa (job #2175067) | Cod sursa (job #842269) | Cod sursa (job #2083525) | Cod sursa (job #2677990)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n, v[16005], p[16005],suma_maxima=-2000000000;
vector<int> a[16005];
int x, y, k;
int dfs(int x)
{
p[x] = 1;
for (int j = 0; j < a[x].size(); j++)
{
if (!p[a[x][j]])
{
int ceva = dfs(a[x][j]);
if (ceva > 0)
v[x] += ceva;
}
}
return v[x];
}
int main()
{
f >> n;
for (int i = 1; i <= n; i++)
{
f >> x;
v[i] = x;
}
while (f >> x >> y)
{
a[x].push_back(y);
a[y].push_back(x);
}
x= dfs(1);
for (int i = 1; i <= n; i++)
if (v[i] > suma_maxima)
suma_maxima = v[i];
g << suma_maxima;
return 0;
}