Pagini recente » Cod sursa (job #1734696) | Cod sursa (job #2196221) | Cod sursa (job #839131) | Cod sursa (job #1141456) | Cod sursa (job #2223522)
#include <fstream>
#define N 16005
#include <vector>
using namespace std;
vector <int> vecin[N];
int cost[N],v[N],maxi=-1e9;
bool viz[N];
void Cost(int nod)
{
viz[nod]=1;
cost[nod]=v[nod];
for(int i=0;i<vecin[nod].size();i++)
{
int x=vecin[nod][i];
if(viz[x]==0)
{
Cost(x);
if(cost[x]>0)
cost[nod]+=cost[x];
}
}
maxi=max(maxi,cost[nod]);
}
int main()
{
ifstream f("asmax.in");
ofstream g("asmax.out");
int n;
f>>n;
for(int i=1;i<=n;i++)
f>>v[i];
for(int i=1;i<n;i++)
{
int a,b;
f>>a>>b;
vecin[a].push_back(b);
vecin[b].push_back(a);
}
Cost(1);
g<<maxi<<" ";
return 0;
}