Pagini recente » Cod sursa (job #1765470) | Cod sursa (job #2171755) | Cod sursa (job #444863) | Cod sursa (job #718369) | Cod sursa (job #36816)
Cod sursa(job #36816)
#include <stdio.h>
#include <vector>
using namespace std;
#define MN (16384)
int N, n[MN], u[MN], X;
vector<int> G[MN];
int c(int node)
{
int i;
for(i = 0; i < G[node].size(); ++i) if(c(G[node][i]) > 0)
n[node] += n[G[node][i]];
return n[node];
}
int main()
{
int i;
freopen("asmax.in", "r", stdin);
freopen("asmax.out", "w", stdout);
scanf("%d", &N);
for(i = 0; i < N; ++i)
scanf("%d", &n[i]);
for(i = 0; i < N-1; ++i) {
int n1, n2;
scanf("%d %d", &n1, &n2); --n1; --n2;
++u[n2];
G[n1].push_back(n2);
}
for(i = 0; i < N; ++i) if(!u[i])
break;
c(i);
for(i = 0; i < N; ++i) if(n[i] > X)
X = n[i];
printf("%d\n", X);
return 0;
}