Cod sursa(job #1413268)

Utilizator Stefan.Andras Stefan Stefan. Data 1 aprilie 2015 19:27:09
Problema Parcurgere DFS - componente conexe Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.38 kb
program dfs;
const maxnod = 100001;
      maxmuchii = 200001;
var f,g:text;
    n,m,k,x,i,j,contor:longint;
    start:array[1..maxnod] of longint;
    viz:array[1..maxnod] of boolean;
    t:array[0..1,1..2*maxmuchii] of longint;
    bufin,bufout:array[1..1 shl 17] of char;
procedure df(nod:longint);
var z:longint;
begin
        z := start[nod];
        viz[nod] := true;
        while z <> 0 do
                begin
                  if not viz[t[0,z]] then
                        df(t[0,z]);
                  z := t[1,z];
                end;
end;
begin
        assign(f,'dfs.in'); reset(f);
        assign(g,'dfs.out'); rewrite(g);
        settextbuf(f,bufin); settextbuf(f,bufout);
        readln(f,n,m);
        k := 1;
        for x := 1 to m do
                begin
                  readln(f, i, j);
                  inc(k);
                  t[0,k] := j;
                  t[1,k] := start[i];
                  start[i] := k;
                  inc(k);
                  t[0,k] := i;
                  t[1,k] := start[j];
                  start[j] := k;
                end;
        contor := 0;
        for i := 1 to n do
                if not viz[i] then
                        begin
                          inc(contor);
                          df(i);
                        end;
        writeln(g,contor);
        close(f); close(g);
end.