Pagini recente » Cod sursa (job #293979) | Cod sursa (job #2481771) | Cod sursa (job #690989) | Cod sursa (job #1926844) | Cod sursa (job #1693265)
#include <iostream>
#include<bitset>
#include<fstream>
#include<vector>
using namespace std;
vector<int> v[16005];
bitset<16005> viz;
int i,n,myvalue,best[16005],mx,a,b;
int dfs(int x)
{
viz[x]=1;
for(int i=0;i<v[x].size();i++)
{
if(!viz[v[x][i]])
{
myvalue=dfs(v[x][i]);
if(myvalue>0) best[x]+=myvalue;
if(myvalue>mx) mx=myvalue;
}
}
return best[x];
}
int main()
{
ifstream f("asmax.in");
ofstream g("asmax.out");
mx=-(1<<30);
f>>n;
for(i=1;i<=n;i++)
{f>>best[i];if(best[i]>mx) mx=best[i];}
for(i=1;i<=n-1;i++)
{
f>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
for(i=1;i<=n;i++)
{
if(!viz[i])
{
myvalue=dfs(i);
if(myvalue>mx) mx=myvalue;
}
}
g<<mx;
return 0;
}