Pagini recente » Cod sursa (job #1451417) | Cod sursa (job #637497) | Cod sursa (job #281219) | Cod sursa (job #3208470) | Cod sursa (job #2603066)
#include <bits/stdc++.h>
using namespace std;
vector <int> G[2001];
int val[2001],k[2001],mx=INT_MIN;
bool viz[2001];
void DFS (int start)
{
viz[start]=1;
k[start]=val[start];
for(int i=0;i<G[start].size();i++)
{
if(viz[G[start][i]]==0)
{
DFS(viz[G[start][i]]);
if(k[G[start][i]]>0)
k[start]+=k[G[start][i]];
}
}
mx=max(mx,k[start]);
}
int main()
{
ifstream f ("asmax.in");
ofstream g ("asmax.out");
int n,x,y;
f>>n;
for(int i=1;i<=n;i++)
f>>val[i];
for(int i=1;i<n;i++)
{
f>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
DFS(1);
g<<mx;
return 0;
}