Cod sursa(job #1596197)

Utilizator VandheerManPopescu Alin VandheerMan Data 10 februarie 2016 20:53:32
Problema Sortare topologica Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.07 kb
type
 ref=^coada;
 coada=record
        inf:integer;
        adru:ref;
        end;
 vec=array[1..50000]of ref;
 vec1=array[1..50001] of integer;

var
g:vec; deg,q:vec1;
c:ref;
a,b,n,m,i,con,x:integer;
f:text;

begin

 assign(f,'sortaret.in');
 reset(f);
 read(f,n,m);
 while (not(eof(f))) do
        begin
         read(f,a,b);
         inc(deg[b]);
         new(g[a]);
         if (i<>a) then c:=nil;
         g[a]^.inf:=b;
         g[a]^.adru:=c;
         c:=g[a];
         i:=a;
        end;
 close(f);
 con:=0;
 for i:=1 to n do if (deg[i]=0) then
        begin
         con:=con+1;
         q[con]:=i;
        end;
 for i:=1 to n do
        begin
          x:=q[i];
          c:=g[i];
          while (c<>nil) do
          begin
           deg[c^.inf]:=deg[c^.inf]-1;
           if (deg[c^.inf]=0) then
           begin
            inc(con);
            q[con]:=c^.inf;
           end;
           c:=c^.adru;
          end;
        end;

assign(f,'sortaret.out');
rewrite(f);
for i:=1 to n do write(f,q[i],' ');
close(f);
end.