Pagini recente » Cod sursa (job #123490) | Cod sursa (job #1929796) | Cod sursa (job #781795) | Cod sursa (job #121109) | Cod sursa (job #126527)
Cod sursa(job #126527)
#include<stdio.h>
#include<algorithm>
#define lg 6005
using namespace std;
int n, pt[lg], d[lg][3], tata, rt[lg], x, y, rezultat, nr[lg], *v[lg], i;
void df(int nod, int str){
int i;
for (i = 1; i <= nr[nod]; i ++)
df(v[nod][i], nod);
d[nod][1] += pt[nod];
d[str][1] += d[nod][2];
}
int main()
{
freopen("a.in", "rt", stdin);
freopen("a.out", "wt", stdout);
scanf("%d", &n);
for (i = 1; i <= n; i ++)
scanf("%d", &pt[i]);
for (i = 1; i < n; i ++){
scanf("%d%d", &x, &y);
//tt[y] = x;
nr[y] ++;
v[y] = (int*)realloc(v[y], (nr[y]+1)*sizeof(int));
v[y][nr[y]] = x;
rt[x] = 1;
}
for (i = 1; i <= n; i ++)
if (!rt[i])
tata = i;
df(tata, 0);
rezultat = max(d[tata][1], d[tata][2]);
printf("%d\n", rezultat);
fclose(stdin);
fclose(stdout);
return 0;
}