Pagini recente » Cod sursa (job #2421770) | Cod sursa (job #480501) | Cod sursa (job #1094800) | Cod sursa (job #2349916) | Cod sursa (job #2199107)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int N=16001;
vector <int> a[N];
ifstream in("asmax.in");
ofstream out("asmax.out");
int n,v[16001],m[16001][16001],suma[16001],summax,viz[16001];
void sum(int x)
{
int y;
viz[x]=1;
suma[x]=v[x];
for(int i=0; i<a[x].size(); i++)
{
y=a[x][i];
if(!viz[y])
{
sum(y);
if (suma[y] > 0)
{
suma[x] += suma[y];
}
}
}
if(suma[x]>summax)
summax=suma[x];
}
void citire()
{
in>>n;
int x,y;
for(int i=1; i<=n; i++)
in>>v[i];
for(int i=1; i<n; i++)
{
in>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
in.close();
}
int main()
{
citire();
sum(1);
out<<summax;
return 0;
}