Pagini recente » Cod sursa (job #1868221) | Cod sursa (job #1905328) | Cod sursa (job #990333) | Borderou de evaluare (job #1567008) | Cod sursa (job #1841055)
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<int> v[16001];
int d[16001],c[16001],D[16001];
int maxi=-2000000000,i,n,x,y;
void dfs(int nod)
{
int i,vecin;
d[nod]=1;
int sfii = 0;
for(i=0;i<v[nod].size();i++)
{
vecin=v[nod][i];
if(d[vecin]==0)
{
dfs(vecin);
if (D[vecin] > 0)
sfii += D[vecin];
}
}
D[nod] = sfii + c[nod];
if(maxi<D[nod])
maxi=D[nod];
}
int main(){
fin>>n;
for(i=1;i<=n;i++)
{
fin>>x;
c[i]=x;
}
while(fin>>x)
{
fin>>y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
fout<<maxi;
fin.close();
fout.close();
return 0;
}