Pagini recente » Cod sursa (job #726731) | Cod sursa (job #1298145) | Cod sursa (job #730980) | Cod sursa (job #3321335) | Cod sursa (job #3338115)
#include <fstream>
#include <climits>
#include <algorithm>
#include <vector>
#include <cstring>
#define DIM 16001
using namespace std;
ifstream cin("asmax.in");
ofstream cout("asmax.out");
// declaring
int n, k, bestmin, x, y;
int sol=INT_MIN, s[DIM], val[DIM], viz[DIM];
vector<int> l[DIM];
/// dfs function
void dfs(int nod)
{
viz[nod] = 1;
s[nod] = val[nod];
for (int i = 0; i < l[nod].size(); i++)
{
if (viz[l[nod][i]] == 0)
{
dfs(l[nod][i]);
if (s[l[nod][i]]>0){
s[nod]=s[nod]+s[l[nod][i]];
}
}
}
if (s[nod]>sol){
sol=s[nod];
}
}
int main()
{
////reading
cin >> n;
for (int i=1;i<=n;i++){
cin >> val[i];
}
for (int i = 1; i < n; i++)
{
cin >> x >> y;
l[x].push_back(y);
l[y].push_back(x);
}
////algorithm
dfs(1);
////outputting
cout << sol;
// test
/*for (int i = 0; i <= n; i++)
{
for (int j = 0; j < l[i].size(); j++)
{
cout <<l[i][j] << " ";
}
cout << endl;}*/
}