Pagini recente » Cod sursa (job #2070589) | Cod sursa (job #22854) | Cod sursa (job #1223662) | Cod sursa (job #2652487) | Cod sursa (job #2964329)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
const int nMax=16e3+2;
int n, v[nMax], maxi, dp[nMax];
vector<int> g[nMax];
bool viz[nMax];
void dfs(int k)
{
viz[k]=1;
for(int i=0; i<g[k].size(); i++)
if(!viz[g[k][i]])
{
dfs(g[k][i]);
if(v[g[k][i]]>0)
v[k]+=v[g[k][i]];
}
maxi=max(maxi, v[k]);
}
int main()
{
ios_base::sync_with_stdio(false);
fin.tie(0);
maxi=-1001;
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>v[i];
if(v[i]>maxi)
maxi=v[i];
}
int x, y;
for(int i=0; i<n-1; i++)
{
fin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
dfs(1);
fout<<maxi;
fin.close();
fout.close();
return 0;
}