Cod sursa(job #408484)

Utilizator hungntnktpHungntnktp hungntnktp Data 3 martie 2010 04:39:35
Problema Sortare topologica Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.13 kb
const fi        =       'sortaret.in';
      fo        =       'sortaret.out';
      maxn      =       55555;
      maxm      =       255555;
var ke          :       array[0..maxm] of longint;
    cu,cv       :       array[0..maxm] of longint;
    start       :       array[0..maxn] of longint;
    ok          :       array[0..maxn] of boolean;
    n,m         :       longint;
    tf          :       text;

procedure init;
var i : longint;
 begin
  assign(tf,fi);
  reset(tf);
  read(tf,n,m);
  for i := 1 to m do
   begin
    readln(tf,cu[i],cv[i]);
    inc(start[cu[i]]);
   end;
  for i := 1 to m do
   begin
    ke[start[cu[i]]] := cv[i];
    dec(start[cu[i]]);
   end;
  close(tf);
 end;

procedure dfs(u:longint);
var i,j,v : longint;
 begin
  ok[u] := false;
  for i := start[u]+1 to start[u+1] do
   begin
    v := ke[i];
    if ok[v] then dfs(v);
   end;
  Write(tf,u,' ');
 end;

procedure process;
var i,j : longint;
 begin
  assign(tf,fo);
  rewrite(tf);
  fillchar(ok,SizeOf(ok),true);
  for i := 1 to n do
   if ok[i] then
    dfs(i);
  close(tf);
 end;
begin
 init;
 process;

end.