Pagini recente » Cod sursa (job #2938805) | Cod sursa (job #3237157) | Cod sursa (job #1350254) | Cod sursa (job #2786504) | Cod sursa (job #2293891)
#include <iostream>
#include <stdio.h>
#include <vector>
#define NMAX 16000
using namespace std;
vector <int> mat [ NMAX + 1 ] ;
int val [ NMAX + 1 ] ;
int viz [ NMAX + 1 ] ;
int s [ NMAX + 1] ;
void dfs (int nod, int n ) {
viz[nod] = 1 ;
for (auto elem : mat[nod] ) {
if (viz[elem] == 0 ) {
dfs(elem, n) ;
s[nod] = max (s[elem] + s[nod], s[nod] ) ;
}
}
}
int main() {
FILE *fin, *fout ;
fin = fopen ("asmax.in", "r" ) ;
fout = fopen ("asmax.out", "w" ) ;
int n, i, j, a, b, maxim ;
fscanf (fin, "%d", &n ) ;
for (i = 1 ; i <= n ; i++ )
fscanf (fin, "%d", &val[i] ) ;
for (i = 1 ; i <= n ; i++ ) {
fscanf (fin, "%d %d", &a, &b ) ;
mat[a].push_back(b) ;
mat[b].push_back(a) ;
s[i] = val[i] ;
}
dfs(1, n) ;
//for (i = 1 ; i <= n ; i++ )
// fprintf (fout, "%d %d\n", s[i], i ) ;
maxim = 0 ;
for (i = 1 ; i <= n ; i++ )
maxim = max (maxim, s[i] ) ;
fprintf (fout, "%d", maxim ) ;
return 0;
}