Cod sursa(job #1344966)

Utilizator TenisescuMuresan Alex Tenisescu Data 17 februarie 2015 09:50:48
Problema Parcurgere DFS - componente conexe Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.04 kb
program ex;
type pcelula=^celula;
     celula=record
        adr:pcelula;
        x:longint;
     End;
var  a:array[1..100000] of boolean;
     v:array[1..100000] of pcelula;
     f,g:text;
     i,j,m,n,s,nod1,nod2:longint;
procedure add(nod1,nod2:longint);
var aux:pcelula;
begin
        new(aux);
        aux^.x:=nod2;
        aux^.adr:=v[nod1];
        v[nod1]:=aux;
end;
procedure dfs(nod:longint);
var p:pcelula;
begin
        a[nod]:=true;
        p:=v[nod];
        While p^.adr<>nil do begin
                If a[p^.x]=false then dfs(p^.x);
                p:=p^.adr;
        End;
End;

Begin
For i:=1 to n do
        v[i]:=nil;
assign(f,'dfs.in');Reset(f);
assign(g,'dfs.out');Rewrite(g);
Readln(f,n,m);
For i:=1 to m do begin
        Readln(nod1,nod2);
        add(nod1,nod2);
        add(nod2,nod1);
End;
For i:=1 to n do
        A[i]:=false;
s:=0;
For i:=1 to n do
        If not(a[i]) then begin dfs(i);
                           s:=s+1;
                     End;
Writeln(g,s);
Close(f);
Close(g);
End.