Pagini recente » Cod sursa (job #2389312) | Cod sursa (job #2833716) | Cod sursa (job #1351265) | Cod sursa (job #1137660) | Cod sursa (job #2638397)
#include <stdio.h>
using namespace std;
#define VMAX 1000
#define NMAX 16000
#include <vector>
vector <int> g[NMAX+1];
int v[VMAX+1],d[NMAX+1],viz[NMAX+1];
int dfs(int nod){
viz[nod]=1;
d[nod]=v[nod];
for(auto next : g[nod]){
if(viz[next]==0){
dfs(next);
d[nod]=std::max(d[nod],d[nod]+d[next]);
}
}
}
int main()
{
FILE *fin,*fout;
fin=fopen("asmax.in","r");
fout=fopen("asmax.out","w");
int n,a,b,i,MAX,j;
fscanf(fin,"%d%",&n);
for(i=1;i<=n;i++){
fscanf(fin,"%d",&v[i]);
}
for(i=1;i<=n-1;i++){
fscanf(fin,"%d%d",&a,&b);
g[a].push_back(b);
g[b].push_back(a);
}
dfs(1);
MAX=-1;
for(i=1;i<=n;i++){
if(d[i]>MAX)
MAX=d[i];
}
fprintf(fout,"%d",MAX);
fclose(fin);
fclose(fout);
return 0;
}