Pagini recente » Cod sursa (job #1910247) | Cod sursa (job #389837) | Cod sursa (job #1170733) | Cod sursa (job #275479) | Cod sursa (job #1759383)
#include <iostream>
#include <cstdio>
#include <vector>
#include <limits.h>
using namespace std;
FILE *f=fopen("asmax.in","r");
int n,m,x[16100],used[16100];
vector <int> lv[16100];
int maxi=INT_MIN;
void citire( )
{
fscanf(f,"%d",&n);
for(int i=1; i<=n; i++)
fscanf(f,"%d",&x[i]);
int a,b;
for(int i=1; i<n; i++)
{
fscanf(f,"%d%d",&a,&b);
lv[a].push_back(b);
lv[b].push_back(a);
}
}
void dfs(int nod1, int nod2)
{
used[nod1]=1;
vector <int>:: iterator ii;
for(ii=lv[nod1].begin(); ii!=lv[nod1].end(); ++ii)
if(!used[*ii])
dfs(*ii,nod1);
for(ii=lv[nod1].begin(); ii!=lv[nod1].end(); ++ii)
if(*ii!=nod2&&x[*ii]>0)
x[nod1]+=x[*ii];
maxi=max(maxi,x[nod1]);
}
void afishare( )
{
FILE *f1=fopen("asmax.out","w");
fprintf(f1,"%d%",maxi);
}
int main()
{
citire();
dfs(1,0);
afishare();
return 0;
}