Pagini recente » Cod sursa (job #2676765) | Utilizatori inregistrati la ONIS 2014, Runda 4 | Cod sursa (job #2922083) | Cod sursa (job #2840989) | Cod sursa (job #1429021)
#include<fstream>
#define uns unsigned short
using namespace std;
const uns NM = 16005;
typedef struct lnod{
uns vf;
struct lnod *next;
}*Nod;
Nod a[NM];
int smax[NM];
bool viz[NM];
void add(int x,int y){
Nod p=new lnod;
p->vf=y;
p->next=a[x];
a[x]=p;
}
void dfs(int nod){
viz[nod]=1;
for(Nod p=a[nod];p;p=p->next)
if(!viz[p->vf])
{
dfs(p->vf);
if(smax[p->vf]>0)smax[nod]+=smax[p->vf];
}
}
int main(void){
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int N,i,mm,x,y;
fin>>N;
for(i=1;i<=N;++i)
fin>>smax[i];
for(i=1;i<N;++i)
{
fin>>x>>y;
add(x,y);
add(y,x);
}
dfs(1);
mm=smax[1];
for(i=2;i<=N;++i)if(smax[i]>mm)mm=smax[i];
fout<<mm;
return 0;
}