Pagini recente » Istoria paginii runda/preoji_2014 | Cod sursa (job #1900614) | Cod sursa (job #3136200) | Cod sursa (job #2014082) | Cod sursa (job #827097)
Cod sursa(job #827097)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
#define NMAX 16001
int val[NMAX],d[NMAX],s[NMAX]; //s = vizitat
vector <int> v[NMAX];
void dfs(int nod)
{
int i;
s[nod]=-1;
d[nod]=val[nod];
for(i=0;i<v[nod].size();i++)
{
if(s[v[nod][i]]==0)
{
dfs(v[nod][i]);
if(d[v[nod][i]]>0)
d[nod]+=d[v[nod][i]];
}
}
}
int main()
{
int i,r,n,a,b;
r=-17000000; //"artificiu"
fin>>n;
n++;
for(i=1;i<n;i++)
fin>>val[i];
n--;
for(i=1;i<n;i++)
{
fin>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
n++;
dfs(1);
for(i=1;i<n;i++)
if(d[i]>r) r=d[i];
fout<<r;
}