Pagini recente » Cod sursa (job #3127731) | Cod sursa (job #1810764) | Cod sursa (job #2711090) | Cod sursa (job #242336) | Cod sursa (job #2593175)
#include <bits/stdc++.h>
#define NMAX 16005
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector <int> a[NMAX];
bool viz[NMAX];
int v[NMAX], n, i, maxx = INT_MIN, x, y;
void dfs(int nod)
{
viz[nod] = 1;
for(vector <int> :: iterator it = a[nod].begin(); it != a[nod].end(); ++ it)
if(!viz[*it])
{
dfs(*it);
if(v[*it] > 0)
v[nod] += v[*it];
}
}
int main()
{
f >> n;
for(i = 1; i <= n; ++ i)
f >> v[i];
while(f >> x >> y)
{
a[x].push_back(y);
a[y].push_back(x);
}
dfs(1);
for(i = 1; i <= n; ++ i)
maxx = max(maxx, v[i]);
g << maxx << "\n";
return 0;
}