MESSAGE - Truyền tin
Tác giả: ll931110
Ngôn ngữ: Pascal
{$MODE DELPHI}
Program MESS;
Const
input = '';
output = '';
maxn = 800;
Var
a: array[1..maxn,1..maxn] of boolean;
free: array[1..maxn] of boolean;
list,num: array[1..maxn] of integer;
n,m,count: integer;
Procedure init;
Var
f: text;
i,u,v: integer;
Begin
Assign(f, input);
Reset(f);
Readln(f, n, m);
Fillchar(a, sizeof(a), false);
For i:= 1 to m do
Begin
Readln(f, u, v);
a[u,v]:= true;
End;
Close(f);
End;
Procedure visit(u: integer);
Var
v: integer;
Begin
free[u]:= false;
For v:= 1 to n do
if a[u,v] and free[v] then
Begin
free[v]:= false;
visit(v);
End;
inc(count);
list[u]:= count;
End;
Procedure solve;
Var
f: text;
i,res: integer;
Begin
count:= 0;
Fillchar(free, sizeof(free), true);
For i:= 1 to n do
if free[i] then visit(i);
For i:= 1 to n do num[list[i]]:= i;
res:= 0;
Fillchar(free, sizeof(free), true);
For i:= n downto 1 do
if free[num[i]] then
Begin
inc(res);
visit(num[i]);
End;
Assign(f, output);
Rewrite(f);
Writeln(f, res);
Close(f);
End;
Begin
init;
solve;
End.