Pagini recente » Cod sursa (job #895882) | Cod sursa (job #1627598) | Cod sursa (job #2611803) | Cod sursa (job #58862) | Cod sursa (job #1901350)
#include <fstream>
#include <vector>
#define nmax 1605
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector<vector<unsigned int> >v(nmax);
int q[nmax], viz[nmax], n, k[nmax], s[nmax];
void citire()
{ int i, a, b;
f>>n;
for(i=1;i<=n;i++)
f>>k[i];
for(i=1;i<n;i++)
{ f>>a>>b;
q[b]=1;
v[a].push_back(b);
v[b].push_back(a);
}
}
void dfs(int x)
{
for(vector <unsigned int> :: iterator it=v[x].begin();it!=v[x].end();it++){
int y=*it;
if(viz[y]==0)
{ viz[y]=1;
dfs(y);
if(s[y]>0) s[x]+=s[y];
}
}
s[x]+=k[x];
}
int main()
{ int i;
citire();
for(i=1;i<=n;i++)
if(q[i]==0)
{ viz[i]=1;
dfs(i);
}
int m=-1<<20;
for(i=1;i<=n;i++) m=max(m,s[i]);
g<<m;
}