Pagini recente » Cod sursa (job #2805854) | Cod sursa (job #3256790) | Cod sursa (job #1560172) | Cod sursa (job #1491828) | Cod sursa (job #866170)
Cod sursa(job #866170)
#include<fstream>
#include<iostream>
#include<ctime>
#include<vector>
using namespace std;
clock_t start=clock();
ifstream f("asmax.in");
ofstream g("asmax.out");
int N;
int V[16001];
int sum[16001];
vector<int> graph[16001];
void DFS(int node)
{
int act = 0;
sum[node] = -1;
for(vector<int>::iterator it = graph[node].begin(); it != graph[node].end(); it++)
{ if(sum[*it] == -1) continue;
DFS(*it);
if(sum[*it] >= 0) act += sum[*it];
}
sum[node] = act + V[node];
}
int main()
{
int i, j, k;
f>>N;
for(i = 1; i <= N; i++)
f>>V[i];
for(i = 1; i < N; i++)
{ f>>j>>k;
graph[j].push_back(k);
graph[k].push_back(j);
}
DFS(1);
for(i = 1, k = 0; i <= N; i++)
k = max(k, sum[i]);
if(k == -1) g<<0;
else g<<k;
cout << 1.0*(clock()-start)/(1.0*CLOCKS_PER_SEC) << '\n';
return 0;
}