Pagini recente » Cod sursa (job #1456890) | Cod sursa (job #2011945) | Cod sursa (job #2006581) | Cod sursa (job #1729074) | Cod sursa (job #408468)
Cod sursa(job #408468)
{$M 64000000,0}
{$H-,I+,Q+,R+,S+}
{La hoang
Ngay 3-3-2010}
const
TFI = 'sortaret.in';
TFO = 'sortaret.out';
MaxN = 50001;
MaxM = 100000;
type
ee = record
u, v: longint;
end;
var
n, m, count: longint;
E: array[1..MaxM] of ee;
Ke, Vt: array[1..MaxM] of longint;
F: array[1..MaxN] of longint;
Free: array[1..MaxN] of boolean;
(*-----------------------------------*)
procedure Input;
var
fi: text;
i:longint;
begin
Assign(fi, TFI); Reset(fi);
Fillchar(Vt, sizeof(Vt), 0);
Readln(fi, n, m);
for i := 1 to m do
With E[i] do
begin
Readln(fi, u, v);
inc(Vt[u]);
end;
inc(Vt[1]);
for i := 2 to n do Vt[i] := Vt[i - 1] + Vt[i];
Vt[n + 1] := Vt[n];
for i := 1 to m do
With E[i] do
begin
dec(Vt[u]);
Ke[Vt[u]] := v;
end;
Close(fi);
end;
(*-----------------------------------*)
procedure Dfs(u: longint);
var
i, v: longint;
begin
Free[u] := false;
for i := Vt[u] to Vt[u + 1] - 1 do
begin
v := Ke[i];
if Free[v] then Dfs(v);
end;
F[count] := u;
dec(count);
end;
(*-----------------------------------*)
procedure Process;
var
i: longint;
begin
Fillchar(Free, sizeof(Free), true);
count := n;
for i := 1 to n do
if Free[i] then Dfs(i);
end;
(*-----------------------------------*)
procedure Output;
var
fo: text;
i: longint;
begin
Assign(fo, TFO); Rewrite(fo);
for i := 1 to n do Write(fo, F[i], ' ');
Close(fo);
end;
(*-----------------------------------*)
begin
Input;
Process;
Output;
end.