Pagini recente » Cod sursa (job #3237987) | Cod sursa (job #859779) | Cod sursa (job #689828) | Cod sursa (job #1531039) | Cod sursa (job #1426959)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
vector <int> Muchii[16010];
int n,m = -20000,v[16010],viz[16010],poz;
int DFS(int nod)
{
viz[nod] = 1;
for(int i = 0; i < Muchii[nod].size(); ++i)
{
if(!viz[Muchii[nod][i]])
{
v[nod] += DFS(Muchii[nod][i]);
}
}
if(v[nod] > 0)
return v[nod];
else
return 0;
}
int main()
{
fstream f("asmax.in", ios::in);
fstream g("asmax.out", ios::out);
f>>n;
for(int i = 1; i <= n; ++i)
{
f>>v[i];
if(v[i] > 0)
poz = i;
if(v[i] > m)
m = v[i];
}
if(m <= 0)
g<<m;
else
{
for(int i = 1; i < n; ++i)
{
int x,y;
f>>x>>y;
Muchii[x].push_back(y);
Muchii[y].push_back(x);
}
m = DFS(poz);
for(int i = 1; i < n; ++i)
if(m < v[i])
m = v[i];
g<<m;
}
return 0;
}