Pagini recente » Cod sursa (job #1247226) | Winter Challenge, Clasament pentru clasele IX-X | Cod sursa (job #756698) | Cod sursa (job #3221138) | Cod sursa (job #578544)
Cod sursa(job #578544)
#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;
const int NMAX = 16005;
const int INF = 1000000000;
int N;
int V[NMAX], maxim = -INF;
vector<int> Arb[NMAX];
bool viz[NMAX];
void citire()
{
cin >> N;
for(int i = 1 ; i <= N ; i++)
cin >> V[i];
int x, y;
for(int i = 1 ; i <= N ; i++)
{
cin >> x >> y;
Arb[x].push_back(y);
Arb[y].push_back(x);
}
}
void DFS(int nod)
{
viz[nod] = 1;
for(vector<int> :: iterator it = Arb[nod].begin() ; it != Arb[nod].end() ; it++)
if(!viz[*it])
{
DFS(*it);
if(V[*it] > 0)
V[nod] += V[*it];
}
}
void scrie()
{
for(int i = 1 ; i <= N ; i++)
maxim = max(maxim , V[i]);
printf("%d\n", maxim);
}
int main()
{
freopen("asmax.in", "r", stdin);
freopen("asmax.out", "w", stdout);
citire();
DFS(1);
scrie();
return 0;
}