Pagini recente » Cod sursa (job #1610622) | Cod sursa (job #1244118) | Cod sursa (job #2257433) | Cod sursa (job #1228904) | Cod sursa (job #743815)
Cod sursa(job #743815)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
const int maxn = 16010;
int n, f[maxn], v[maxn];
vector <int> graf[maxn];
void read()
{
ifstream in("asmax.in");
int i, a, b;
in >> n;
for(i = 1; i <= n; ++i)
in >> v[i];
for(i = 1; i < n; ++i){
in >> a >> b;
graf[a].push_back(b);
graf[b].push_back(a);
}
}
void DFS(int nod)
{
vector <int> :: iterator it;
f[nod] = 1;
for(it = graf[nod].begin(); it!= graf[nod].end(); ++it)
if(!f[*it]){
DFS(*it);
if(v[*it] > 0)
v[nod] += v[*it];
}
}
void write()
{
ofstream out("asmax.out");
int i, max = (-1) * (1 << 30);
for(i = 1; i <= n; ++i)
if(v[i] > max)
max = v[i];
out << max;
}
int main()
{
read();
DFS(1);
write();
return 0;
}