Pagini recente » Cod sursa (job #2771349) | Cod sursa (job #2041319) | Cod sursa (job #1803324) | Cod sursa (job #2120371) | Cod sursa (job #1871378)
#include <fstream>
#include <vector>
using namespace std;
ifstream fi("asmax.in");
ofstream fo("asmax.out");
int n,c[16001],viz[16001],d[16001],sol=-(1<<30);
vector<vector<int>> G;
void ReadGraph()
{
fi>>n;
G.resize(n+1);
for(int i=1; i<=n; i++) fi>>c[i];
int x,y;
while(fi>>x>>y)
{
G[x].push_back(y);
G[y].push_back(x);
}
}
void DF(int x)
{
viz[x]=1;
d[x]=c[x];
for(auto & y : G[x])
{
if(viz[y]) continue;
DF(y);
if (d[y]>0) d[x]+=d[y];
}
sol=max(sol,d[x]);
}
int main()
{
ReadGraph();
DF(1);
fo<<sol;
return 0;
}