Pagini recente » Cod sursa (job #1458852) | Cod sursa (job #2930607) | Cod sursa (job #1472267) | Cod sursa (job #3138312) | Cod sursa (job #992464)
Cod sursa(job #992464)
#include <stdio.h>
#include <vector>
#include <algorithm>
#define MAX 16001
using namespace std;
int sol[MAX];
int vizitat[MAX];
int val[MAX];
vector <int> v[MAX];
int n, x, y, i;
void dfs (int nod)
{
int i;
vizitat[nod] = 1;
for ( i = 0; i < v[nod].size(); i ++ )
{
if( !vizitat[ v[nod][i] ] )
{
dfs(v[nod][i]);
if ( sol[ v[nod][i] ] > 0 )
sol[nod] += sol[ v[nod][i] ];
}
}
}
int main()
{
FILE *fis = fopen("asmax.in", "r");
fscanf(fis, "%d", &n);
for ( i = 1; i <= n; i ++ )
fscanf(fis, "%d", &sol[i]);
for ( i = 1; i < n; i++ )
{
fscanf(fis, "%d %d", &x, &y);
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
sort(sol+1,sol+n+1);
fclose(fis);
FILE *fis2 = fopen ("asmax.out", "w");
fprintf(fis2, "%d\n", sol[n]);
fclose(fis2);
return 0;
}