Pagini recente » Cod sursa (job #2701711) | Cod sursa (job #369936) | Cod sursa (job #2393713) | Cod sursa (job #1524177) | Cod sursa (job #408459)
Cod sursa(job #408459)
{$M 64000000,0}
{$H-,I+,Q+,R+,S+}
{La hoang
Ngay 3-3-2010}
const
TFI = 'sortaret.in';
TFO = 'sortaret.out';
MaxN = 50000;
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];
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.