Pagini recente » Cod sursa (job #1677591) | Cod sursa (job #356719) | Cod sursa (job #3256004) | Cod sursa (job #2951567) | Cod sursa (job #13648)
Cod sursa(job #13648)
#include <stdio.h>
#define NMAX 16384
#define INF "asmax.in"
#define OUF "asmax.out"
int s[NMAX];
struct nod
{
int x;
nod *next;
};
struct lst
{
nod *p,*q;
}list[NMAX];
void deeps(int vf)
{
if(list[vf].p!=NULL)
{
nod *op;
op=list[vf].p;
while(op!=NULL)
{
deeps(op->x);
s[vf]+=s[op->x];
op=op->next;
}
}
}
int main()
{
int n,i,a,b,v,max;
//char bit[NMAX]={0};
nod *op;
FILE *in,*out;
in=fopen(INF,"r");
out=fopen(OUF,"w");
fscanf(in,"%d",&n);
for(i=1;i<=n;i++)
{
fscanf(in,"%d",s+i);
list[i].p=list[i].q=NULL;
}
fscanf(in,"%d %d",&a,&b);
op=new nod;
op->x=b;op->next=NULL;
if(list[a].p==NULL) list[a].p=list[a].q=op;
else
{
list[a].q->next=op;
list[a].q=op;
}
v=a;// prima val este radacina
for(i=2;i<n;i++)
{
fscanf(in,"%d %d",&a,&b);
op=new nod;
op->x=b;op->next=NULL;
if(list[a].p==NULL) list[a].p=list[a].q=op;
else
{
list[a].q->next=op;
list[a].q=op;
}
}
deeps(v);
max=-16777216;
// for(i=1;i<=n;i++) printf("%d ",s[i]);
for(i=1;i<=n;i++) if(s[i]>max&&list[i].p!=NULL) max=s[i];
fprintf(out,"%d",max);
fclose(in);fclose(out);
return 0;
}