Pagini recente » Cod sursa (job #726096) | Cod sursa (job #2031817) | Cod sursa (job #1513228) | Cod sursa (job #2955548) | Cod sursa (job #1435112)
#include<iostream>
#include<vector>
#include<fstream>
#define maxn 100005
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector <int> t[maxn];
int i,j,n,m,valori[maxn],nod[maxn],cost[maxn],MAX;
int dfs(int k)
{
nod[k]=1;
cost[k]=valori[k];
for(int j=0;j<t[k].size();j++)
if(nod[t[k][j]]==0)
{
i=dfs(t[k][j]);
cost[k]=max(cost[k]+i,cost[k]);
}
return cost[k];
}
int main()
{
f>>n;
int maxv=1;
for(i=1;i<=n;i++)
{
f>>valori[i];
if(valori[i]>valori[maxv])maxv=i;
}
while(f>>i>>j)
{
t[i].push_back(j);
t[j].push_back(i);
}
MAX=-9999999;
for(j=1;j<=n;j++)
MAX=max(MAX,dfs(j));
g<<MAX;
g.close();
return 0;
}