Pagini recente » Cod sursa (job #2276648) | Cod sursa (job #2512984) | Cod sursa (job #2029551) | Cod sursa (job #1089136) | Cod sursa (job #2830600)
#include <iostream>
#include <fstream>
#include <vector>
#define NN 160001
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector <int> adiacenta[NN];
bool visited[NN];
int cost[NN];
int maxim = -10000;
void DFS(int vf)
{
visited[vf] = true;
for(int i = 0; i < adiacenta[vf].size(); ++i)
{
if (!visited[adiacenta[vf][i]])
{
DFS(adiacenta[vf][i]);
if (cost[adiacenta[vf][i]] >= 0) cost[vf] += cost[adiacenta[vf][i]];
}
}
}
int main()
{
int N, a, b, s;
in>>N;
for(int i = 1; i <= N; ++i)
in>>cost[i];
for(int i = 1; i <= N; ++i)
visited[i] = false;
for(int i = 1; i < N; ++i)
{
in>>a>>b;
adiacenta[a].push_back(b);
adiacenta[b].push_back(a);
}
DFS(1);
for(int i = 1; i <= N; ++i)
{
if(cost[i] > maxim)
{
maxim = cost[i];
}
}
out<<maxim;
return 0;
}