Pagini recente » Cod sursa (job #2549257) | Cod sursa (job #959707) | Cod sursa (job #346144) | Cod sursa (job #2809554) | Cod sursa (job #2331515)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int N, val[16005];
vector <int> g[16005];
void DFS(int node, int dad)
{
for(auto it : g[node])
if(it != dad)
{
DFS(it, node);
if(val[it] >= 0)
val[node] += val[it];
}
}
int main()
{
fin >> N;
for(int i = 1; i <= N; i++)
fin >> val[i];
int x, y;
while(fin >> x >> y)
{
g[x].push_back(y);
g[y].push_back(x);
}
DFS(1, 0);
int ans = val[1];
for(int i = 2; i <= N; i++)
ans = max(ans, val[i]);
fout << ans << '\n';
return 0;
}