Pagini recente » Cod sursa (job #2924656) | Cod sursa (job #2115653) | Cod sursa (job #127191) | Cod sursa (job #445959) | Cod sursa (job #957341)
Cod sursa(job #957341)
#include<fstream>
#include<vector>
using namespace std;
vector <int> a[16001];
int b[16001],d[16001],i,mx,x,y,n;
bool v[16001];
void df(int x)
{
int i;
v[x]=1;
d[x]=b[x];
for (i=0;i<a[x].size();i++)
if (v[a[x][i]]==0)
{
df(a[x][i]);
if (d[a[x][i]]>0)
d[x]=d[x]+d[a[x][i]];
}
if (d[x]>mx)
mx=d[x];
}
int main()
{
ifstream f("asmax.in");
ofstream g("asmax.out");
f >> n;
mx=-(1 << 30);
for (i=1;i<=n;i++)
f >> b[i];
for (i=1;i<n;i++)
{
f >> x >> y;
a[x].push_back(y);
a[y].push_back(x);
}
df(1);
g << mx;
return 0;
}