Cod sursa(job #1087015)

Utilizator alexcruceruAlexandru Cruceru alexcruceru Data 18 ianuarie 2014 20:01:25
Problema Parcurgere DFS - componente conexe Scor 5
Compilator fpc Status done
Runda Arhiva educationala Marime 1.13 kb
program nrdecomponenteconexe;
type sir=array[1..100000]of longword;
var f,g:text;
    a,b,co:sir;
    n,m,i,j,k,x,y,aux:longword;


begin
assign(f,'dfs.in');reset(f);
assign(g,'dfs.out');rewrite(g);
readln(f,n,m);
k:=0;
for i:=1 to n do co[i]:=0;
for i:=1 to m do
  begin
  readln(f,x,y);
  a[i]:=x;
  b[i]:=y;
  end;
for i:=1 to m do
  if a[i]>b[i] then
    begin
    aux:=a[i];
    a[i]:=b[i];
    b[i]:=aux;
    end;

for i:=1 to n-1 do
  for j:=i to n do
    if a[j]>a[i] then
      begin
      aux:=a[j];
      a[j]:=a[i];
      a[i]:=aux;
      aux:=b[j];
      b[j]:=b[i];
      b[i]:=aux;
      end
    else if (a[j]=a[i])and(b[j]>b[i]) then
      begin
      aux:=a[j];
      a[j]:=a[i];
      a[i]:=aux;
      aux:=b[j];
      b[j]:=b[i];
      b[i]:=aux;
      end;

for i:=1 to m do
  begin
  if (co[a[i]]=0)and(co[b[i]]=0) then begin inc(k); co[a[i]]:=k; co[b[i]]:=k; end
    else if co[a[i]]=0 then co[a[i]]:=co[b[i]]
      else if co[b[i]]=0 then co[b[i]]:=co[a[i]];
  end;

for i:=1 to n do
  if co[i]=0 then inc(k);

write(g,k);
close(f);
close(g);
end.