Cod sursa(job #493923)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 19 octombrie 2010 21:52:32
Problema Parcurgere DFS - componente conexe Scor 5
Compilator fpc Status done
Runda Arhiva educationala Marime 0.83 kb
program dfs;
const maxn=100001;
      maxm=200001;
type inod=0..maxn;
     pnod=^nod;
     nod=record
     inf:inod;
     next:pnod;
     end;
var f,g:text; A,ult:array[inod] of pnod; i,n,S:inod; m:0..maxm;
    viz:array[inod] of 0..1;
procedure citire;
var q:pnod; x,y:inod;
begin
Readln(f,n,m);
For i:=1 to m do
 begin
 Readln(f,x,y);
 new(q);
 q^.inf:=y;
 If A[x]=nil then begin A[x]:=q; ult[x]:=q; end
             else begin ult[x]^.next:=q; ult[x]:=q; end;
 end;
end;
procedure dfs;
var x:pnod;
begin
For i:=1 to n do viz[i]:=0;
S:=0;
For i:=1 to n do
 If viz[i]=0 then
  begin
  inc(S);
  x:=A[i];
  While x<>nil do
   begin
   viz[x^.inf]:=1;
   x:=x^.next;
   end;
  end;
end;
begin
Assign(f,'dfs.in'); Reset(f);
Assign(g,'dfs.out');Rewrite(g);
citire; Close(f);
dfs;
Write(g,S); Close(g);
end.