Pagini recente » Cod sursa (job #712409) | Cod sursa (job #621057) | Cod sursa (job #2829612) | Cod sursa (job #780178) | Cod sursa (job #147077)
Cod sursa(job #147077)
#include <fstream>
#define DIM 16001
using namespace std;
typedef struct nod
{
int vf;
nod *next;
} NOD, *PNOD;
int n, m;
PNOD L[DIM];
int val[DIM];
int suma[DIM];
int sel[DIM];
void Read();
int Df(int);
int main()
{
int i, max;
Read();
suma[1] = Df(1);
max = suma[1];
for (i = 2; i <= n; i++)
if (suma[i] > max) max = suma[i];
ofstream fout ("asmax.out");
fout << max;
fout.close();
return 0;
}
int Df(int v)
{
sel[v] = 1;
PNOD P;
int a = 0, s = val[v];
for (P = L[v]; P; P = P->next)
if (!sel[P->vf])
{
a = Df(P->vf);
if (a > 0) s += a;
}
suma[v] = s;
return s;
}
void Read()
{
int i, a, b;
PNOD P;
ifstream fin ("asmax.in");
fin >> n;
m = n - 1;
for (i = 1; i <= n; i++)
fin >> val[i];
for (i = 1; i <= m; i++)
{
fin >> a >> b;
P = new NOD;
P->vf = a;
P->next = L[b];
L[b] = P;
P = new NOD;
P->vf = b;
P->next = L[a];
L[a] = P;
}
fin.close();
}