Pagini recente » Cod sursa (job #2000324) | Cod sursa (job #3285728) | Cod sursa (job #2697189) | Cod sursa (job #1296841) | Cod sursa (job #2230381)
#include<bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector<int>G[16001];
int cost[16001],v[16001],mx=-10000;
int n,x,y;
bool viz[1000001];
void DFS(int node)
{
viz[node]=1;
cost[node]=v[node];
for(vector<int>::iterator it=G[node].begin();it<G[node].end();++it)
{
if(viz[*it]==0)
{
DFS(*it);
if(cost[*it]>0)
cost[node]+=cost[*it];
}
}
mx=max(mx,cost[node]);
}
int main()
{
f>>n;
for(int i=1;i<=n;++i)
f>>v[i];
while(f>>x>>y)
{
G[x].push_back(y);
G[y].push_back(x);
}
DFS(1);
g<<mx;
}