Pagini recente » Cod sursa (job #566344) | Cod sursa (job #1041933) | Cod sursa (job #1929284) | Cod sursa (job #954642) | Cod sursa (job #631486)
Cod sursa(job #631486)
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
vector<int>v[16003];
int s[16003],Max,n,Val[16003];
bool uz[16003];
void dfs(int x)
{
s[x]=Val[x];
for(vector<int>::iterator it=v[x].begin();it!=v[x].end();it++)
if(!uz[*it])
{
uz[*it]=1;
dfs(*it);
if(s[*it]>0) s[x]+=s[*it];
if(Max<s[x]) Max=s[x];
}
}
int main()
{
int x,y,i;
ifstream fi("asmax.in");
ofstream fo("asmax.out");
fi>>n;
for(i=1;i<=n;i++) fi>>Val[i];
for(i=0;i<n;i++)
{
fi>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
Max=Val[1];
uz[1]=1;
dfs(1);
fo<<Max<<"\n";
return 0;
}