Cod sursa(job #554980)

Utilizator boti12botiGal Botond boti12boti Data 15 martie 2011 10:52:55
Problema Sortare topologica Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 0.97 kb
type mat=array[1..30000,1..30000] of 0..1;
     vek=array[1..50000] of 0..1;
     mut=^elem;
     elem=record
       inf:integer;
       elo:mut;
     end;
var n,m,i,j,a,b:integer; x:mat; jr:vek; f,g:text; v:vek; top:mut;
procedure push(var top:mut; a:integer);
  var p:mut;
  begin
    new(p);
    p^.inf:=a;
    if top<>nil then p^.elo:=top
    else p^.elo:=nil;
    top:=p;
  end;
procedure df(k:integer);
  var i:integer;
  begin
    jr[k]:=1;
    for i:=1 to n do begin
      if (x[k,i]=1)and(jr[i]=0) then df(i);
      end;
    push(top,k);
  end;
begin
  top:=nil;
  assign(f,'sortaret.in');
  reset(f);
  readln(f,n,m);
  for i:=1 to n do jr[i]:=0;
  for i:=1 to m do begin
    readln(f,a,b);
    x[a,b]:=1;
  end;
  close(f);
  for i:=1 to n do
    if jr[i]=0 then df(i);
  assign(g,'sortaret.out');
  rewrite(g);
  write(g,top^.inf,' ');
  while top^.elo<>nil do begin
    top:=top^.elo;
    write(g,top^.inf,' ');
  end;
  close(g);
end.