Cod sursa(job #1589350)

Utilizator TirauStelianTirau Ioan Stelian TirauStelian Data 3 februarie 2016 22:10:05
Problema Parcurgere DFS - componente conexe Scor 70
Compilator fpc Status done
Runda Arhiva educationala Marime 1.15 kb
program dfs;
var t1,t2,start,viz:array of longint;
    ok:boolean;
    n,m,c,l:longint;
    f,g:text;
  procedure citire;
  var i,j,k:longint;
  begin
    assign(f,'dfs.in');reset(f);
    readln(f,n,m);
    setlength(t1,m*2+1);
    setlength(t2,m*2+1);
    setlength(start,n+1);
    setlength(viz,n+1);
    k:=0;
    for l:=1 to m do
      begin
        readln(f,i,j);
        inc(k);
        t1[k]:=i;
        t2[k]:=start[j];
        start[j]:=k;
        inc(k);
        t1[k]:=j;
        t2[k]:=start[i];
        start[i]:=k;
      end;
    close(f);
  end;
  procedure df(nod:longint);
  var p:longint;
  begin
    p:=start[nod];
    viz[nod]:=1;
    while p>0 do
      begin
        if viz[t1[p]]=0 then
          df(t1[p]);
        p:=t2[p];
      end;
  end;
  procedure afisare;
  var i,p:longint;
  begin
    assign(g,'dfs.out');rewrite(g);
    writeln(g,c);
    close(g);
  end;
begin
  citire;
  c:=0;
  repeat
    ok:=true;
    for l:=1 to n do
      if viz[l]=0 then
        begin
          inc(c);
          df(l);
          ok:=false;
          break;
        end;
  until ok=true;
  afisare;
end.