Cod sursa(job #1606740)

Utilizator noi_totinoi toti noi_toti Data 20 februarie 2016 14:51:59
Problema Parcurgere DFS - componente conexe Scor 50
Compilator fpc Status done
Runda Arhiva educationala Marime 1.08 kb
program graf;
type mat_ad=array[1..10000,1..10000] of integer;
var a:mat_ad;
    v:array[1..10000] of integer;
    n,m,c,k:longint;
    f,g:text;
procedure citire;
var i,x,y,j:longint;
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);
      a[x,y]:=1;
      a[y,x]:=1;
    end;
  close(f);
end;
procedure df(s:integer);
var i:integer;
begin
  v[s]:=1;
  for i:=1 to n do
    if a[s,i]=1 then
      if v[i]=0 then
        df(i);
end;
procedure test;
var i:integer;
begin
  for i:=1 to n do
    if v[i]=0 then
      begin
        k:=i;
        break;
      end
       else
         k:=n;
end;
procedure conex;
var i:integer;
begin
  i:=1;
  while i<n do
    begin
      df(i);
      test;
      c:=c+1;
      i:=k;
    end;
end;
procedure final;
var i:integer;
begin
  for i:=1 to n do
    if v[i]=0 then
      begin
        c:=c+1;
        v[i]:=1;
      end;
end;
begin
  citire;
  c:=0;
  k:=0;
  conex;
  final;
  write(g,c);
  close(g);
end.