Cod sursa(job #351448)

Utilizator ionutz32Ilie Ionut ionutz32 Data 28 septembrie 2009 09:32:48
Problema Taramul Nicaieri Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.18 kb
type ref=^nod;
nod=record
    nr:byte;
    adr:ref;
    end;
var v:array[1..100] of ref;
u:ref;
a,b:array[1..100] of byte;
n,m,i,j:longint;
f,g:text;
begin
assign(f,'harta.in');
assign(g,'harta.out');
reset(f);rewrite(g);
readln(f,n);
for i:=1 to n do
    begin
    read(f,a[i],b[i]);
    inc(m,a[i]);
    end;
writeln(g,m);
for i:=1 to n do
    begin
    for j:=1 to n do
        v[j]:=nil;
    for j:=1 to n do
        if (b[j]>0) and (i<>j) then
           if v[b[j]]=nil then
              begin
              new(v[b[j]]);
              v[b[j]]^.nr:=j;
              v[b[j]]^.adr:=nil;
              end
           else
               begin
               new(u);
               u^.nr:=j;
               u^.adr:=v[b[j]];
               v[b[j]]:=u;
               end;
    for j:=n downto 1 do
        begin
        u:=v[j];
        while u<>nil do
              begin
              if a[i]=0 then
                 break;
              writeln(g,i,' ',u^.nr);
              dec(a[i]);
              dec(b[u^.nr]);
              u:=u^.adr;
              end;
        if a[i]=0 then
           break;
        end;
    end;
close(f);close(g);
end.