Cod sursa(job #240799)

Utilizator 05_YohnE1 La5c01 05_Yohn Data 8 ianuarie 2009 18:45:39
Problema Parcurgere DFS - componente conexe Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.13 kb
program lfdaf;
var v:array[1..100009,1..100009]of boolean;
viz:array[1..100009]of boolean;
f,g:text;
i,n,m,s,x,y:longint;
ok:boolean;

function caut:longint;
var i:integer;
begin
for i:=1 to n do if viz[i]=false then break;
caut:=i;
end;

procedure parcurgere(x:longint);
var p,u,vf,i:longint;
    c:array[1..100009]of longint;
begin
p:=1;u:=1;c[1]:=x;viz[x]:=true;
while p<=u do begin
              vf:=c[p];
              for i:=1 to n do if v[vf,i] and not viz[i] then begin
                                                  inc(u);
                                                  c[u]:=i;
                                                  viz[i]:=true;
                                                  end;
              inc(p);
end;
inc(s);
end;

begin
assign(f,'dfs.in');reset(f);
assign(g,'dfs.out');rewrite(g);
readln(f,n,m);
for i:=1 to m do begin
    readln(f,x,y);
    v[x,y]:=true;v[y,x]:=true;
end;
s:=0;ok:=true;
while ok do begin
      i:=caut;
      if (i<>n)or((i=n)and(not viz[n])) then parcurgere(i)
                                        else ok:=false;
end;
writeln(g,s);
close(g);
end.