Pagini recente » Cod sursa (job #374061) | Cod sursa (job #452015) | Cod sursa (job #1079228) | Cod sursa (job #549178) | Cod sursa (job #2482197)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int v[16004],s[16004],i,j,n;
vector <int> a[16004];
void dfs(int i)
{
v[i]=1;
for(int j=0;j<a[i].size();j++)
{
int vec=a[i][j];
if(v[vec]==0)
{
dfs(vec);
if(s[i]+s[vec]>s[i])
s[i]+=s[vec];
}
}
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)
fin>>s[i];
while(fin>>i>>j)
{
a[i].push_back(j);
a[j].push_back(i);
}
dfs(1);
int maxim=-1004;
for(i=1;i<=n;i++)
maxim=max(maxim,s[i]);
fout<<maxim;
return 0;
}