Cod sursa(job #401300)

Utilizator nickyyLal Daniel Emanuel nickyy Data 22 februarie 2010 18:51:15
Problema Sortare topologica Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.96 kb
const infile='sortaret.in';
  outfile='sortaret.out';
  maxn=50001;
type lista=^nod;
  nod=record
    inf:longint;
    next:lista;
    end;
var a:array[1..maxn]of lista;
 ord:array[0..maxn]of longint;
 uz:array[1..maxn]of byte;
 n,nr,m:longint;

 procedure citire;
 var f:text;
   i,j:longint;
   p:lista;
 begin
   assign(f,infile); reset(f); readln(f,n,m);
   while(m>0)do begin
     readln(f,i,j); new(p); p^.inf:=j; p^.next:=a[i]; a[i]:=p; dec(m);
     end;
   close(f);
 end;

 procedure dfs(x:longint);
 var p:lista;
 begin
   uz[x]:=1; p:=a[x];
   while(p<>nil)do begin
     if(uz[p^.inf]=0)then dfs(p^.inf);
     p:=p^.next;
     end;
   inc(nr); ord[nr]:=x;
 end;

 procedure afisare;
 var f:text;
   i:longint;
 begin
   assign(f,outfile); rewrite(f);
   nr:=0; fillchar(uz,sizeof(uz),0);
   for i:=1 to n do if(uz[i]=0)then dfs(i);
   for i:=n downto 1 do write(f,ord[i],' ');
   close(f);
 end;

begin
citire; afisare;
end.