Pagini recente » Cod sursa (job #2406552) | Cod sursa (job #1550099) | Cod sursa (job #1450079) | Cod sursa (job #2492216) | Cod sursa (job #2212028)
#include <fstream>
#include <vector>
using namespace std;
vector <int> v[16002];
int n,a,b,Max=-200000000,val[16002],k;
bool viz[16002];
void dfs(int start, int parinte)
{
int i;
viz[start]=1;
for(i=0;i<v[start].size();i++)
{
k=v[start][i];
if(!viz[k])
dfs(k,start);
}
if(val[start]>0)
val[parinte]+=val[start];
}
int main()
{
ifstream f("asmax.in");
ofstream g("asmax.out");
int i;
f>>n;
for(i=1;i<=n;i++)
{
f>>a;
val[i]=a;
}
for(i=2;i<=n;i++)
{
f>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
dfs(1,0);
for(i=1;i<=n;i++)
if(val[i]>Max)
Max=val[i];
g<<Max;
return 0;
}