Pagini recente » Cod sursa (job #1995010) | Cod sursa (job #2764402) | Cod sursa (job #1878304) | Cod sursa (job #2676321) | Cod sursa (job #1865611)
#include <fstream>
#include <vector>
#define NDIM 16002
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector <int> L[NDIM];
int sol,i,s[16002],v[16002],viz[16002],x,y,n;
void dfs(int x)
{
viz[x]=1;
int nodi=x;
s[nodi]=v[nodi];
for(int i=0; i<L[nodi].size(); i++)
{
int nodc=L[nodi][i];
if(viz[nodc]==0)
{
dfs(nodc);
if(s[nodc]>0)
s[nodi]+=s[nodc];
}
}
sol=max(sol,s[nodi]);
}
int main()
{
f>>n;
sol=-2000000000;
for(i=1; i<=n; i++)
{
f>>v[i];
if (v[i]>sol) sol=v[i];
}
for(i=1; i<n; i++)
{
f>>x>>y;
L[x].push_back(y);
L[y].push_back(x);
}
dfs(1);
g<<sol;
return 0;
}