| 
 | 
back to boardCan anyone help me? I have a few questions about this problem. if it is a hierarchical structure, rooted at the president that means that the strucure is a tree. Well if it is a tree there should be only n-1  connections why does it have to end with 0 0.   My program reads only n-1 line after the conviviality ratings. Is thits why i get WA or what is it. Pls help     program party; var     p,nf   :array[1..6000] of integer; {p[i] supervisor of i} {nf number of "sons"}         cu,fa  :array[1..6000] of longint; {cu[i] maximum conviviality rating when employee i comes to the party fa[i] maximum conviviality rating when employee i stays home}         cov    :array[1..6000] of integer;         nx,cr,n,i,last:integer; {cr current leaf nx next leaf} {every time we analyze a leaf we cut it from the tree} {doing that at a time another node will becom a leaf} begin         read(n);         fillchar(nf,12000,0);         fillchar(fa,24000,0);         fillchar(cu,24000,0);         fillchar(p ,12000,0);         for i:=1 to n do         begin                 read(cov[i]);         end;         cu[1]:=cov[1];         for i:=2 to n do         begin                 read(cr,nx);                 inc(nf[nx]);                 p[cr]:=nx;                 cu[i]:=cov[i];         end;         i:=1; {search for the first leaf}         while (nf[i]>0) do inc(i);         cr:=i;         inc(i); {search for the next if it exists}         while (nf[i]>0) and (i<=n) do inc(i);         nx:=i;         while true do         begin                 if p[cr]>0 then                 begin                         cu[p[cr]]:=fa[cr]+cu[p[cr]];                         if fa[cr]>cu[cr] then                                 fa[p[cr]]:=fa[p[cr]]+ fa[cr] else                                 fa[p[cr]]:=fa[p[cr]]+ cu[cr];                         dec(nf[p[cr]]);                         cr:=p[cr];                         if (cr>nx) or (nf[cr]<>0) then                         begin                                 {execute if the father doesn't become a leaf or the father is bigger than nx, otherwise process the father}                                 cr:=nx;                                 inc(nx);                                 while (nx<=n) and (nf[nx]>0)  do inc (nx);                         end;                 end else break;         end; {when father of cr is 0 cr is the president}         writeln(cu[cr]); end.       PS sorry for my english Re: Can anyone help me? I have a few questions about this problem. my program read n-1 line and got AC there are something wrong with your program na :)   void input(void) {  long i;  fscanf(fp,"%ld",&n);  for(i=1;i<=n;i++) fscanf(fp,"%ld",&rate[i]);  for(i=1;i<n;i++)   { fscanf(fp,"%ld %ld",&con[i].l,&con[i].k);     deg[con[i].l]++;   } }  |  
  | 
|