Pagini recente » Monitorul de evaluare | Cod sursa (job #295024) | Cod sursa (job #190073) | Cod sursa (job #1588043) | Cod sursa (job #1567692)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int v[16005], n, a[16000], cost[16000], c[1000][1000];
void parc_adancime(int nod) {
int i;
a[nod]=1;
cost[nod] = v[nod];
for (i=1;i<=n;i++)
if (a[i] != 1 && c[nod][i] == 1) {
parc_adancime(i);
if (cost[i] > 0)
cost[nod] = cost[nod] + cost[i];
}
}
int main()
{
int i,j,max1,x,y;
f>>n;
for (i=1;i<=n;i++)
f>>v[i];
for (i=1;i<=n-1;i++) {
f>>x>>y;
c[x][y] = 1;
c[y][x] = 1;
}
parc_adancime(1);
max1=cost[1];
for (i=1;i<=n;i++)
if (max1<cost[i])
max1=cost[i];
g<<max1<<endl;
return 0;
}