Pagini recente » Cod sursa (job #2501290) | Cod sursa (job #1590725) | Cod sursa (job #3318291) | Cod sursa (job #1015384) | Cod sursa (job #3315334)
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
using namespace std;
//ifstream fin("cifra.in");
//ofstream gout("cifra.out");
ifstream fin("asmax.in");
ofstream gout("asmax.out");
void suma(int x,vector<int>&s,vector<vector<int>>&g,
vector<bool>&viz,vector<int>&v)
{
viz[x]=1;
s[x]=v[x];
for(auto i:g[x])if(!viz[i])
{
suma(i,s,g,viz,v);
s[x]=max(s[x],s[x]+s[i]);
}
}
int main()
{
ios_base::sync_with_stdio(false);
fin.tie(0);
gout.tie(0);
int n,i,j;
fin>>n;
vector<int>v(n+1,-2),s(n+1,-2e9);
vector<vector<int>>g(n+1,vector<int>(0));
for(i=1; i<=n; ++i)fin>>v[i];
while(fin>>i>>j)
{
g[i].push_back(j);
g[j].push_back(i);
}
vector<bool>viz(n+1,0);
suma(1,s,g,viz,v);
gout<<*max_element(s.begin()+1,s.end());
}