Pagini recente » Cod sursa (job #1033678) | Cod sursa (job #2830646)
#include <bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n;
vector<int> v[16001], suma, val;
vector<bool> vizitat;
void citire()
{
int i;
for(i = 0; i <= 16001; i++)
{
suma.push_back(0);
vizitat.push_back(0);
}
int nod1, nod2, x;
f>>n;
for(i = 0; i < n; i++)
{
f>>x;
val.push_back(x);
}
for(i = 0; i < n; i++)
{
f>>nod1>>nod2;
v[nod1].push_back(nod2);
v[nod2].push_back(nod1);
}
}
void dfs(int nod)
{
vizitat[nod] = 1;
suma[nod] = val[1];
for(auto i: v[nod])
{
if(!vizitat[i])
{
dfs(nod);
if(suma[nod] < suma[nod] + suma[i])
suma[nod] = suma[nod] + suma[i];
}
}
}
int main()
{
int s = -16000, i;
citire();
dfs(1);
for(i = 0; i < n; i++)
if(suma[i] > s)
s = suma[i];
cout<<s;
return 0;
}