Cod sursa(job #401231)

Utilizator nickyyLal Daniel Emanuel nickyy Data 22 februarie 2010 17:55:55
Problema Parcurgere DFS - componente conexe Scor 65
Compilator fpc Status done
Runda Arhiva educationala Marime 0.91 kb
const infile='dfs.in';
  outfile='dfs.out';
  maxn=100001;
type list=^nod;
  nod=record
        inf:integer;
        next:list;
        end;
var n,nr,m:longint;
  a:array[1..maxn]of list;
  uz:array[0..maxn]of 0..1;

 procedure citire;
 var f:text;
   i,j,k:longint;
   p:list;
 begin
   assign(f,infile); reset(f); readln(f,n,m);
   for k:=1 to m do begin
     readln(f,i,j); new(p); p^.inf:=j; p^.next:=a[i]; a[i]:=p;
     new(p); p^.inf:=i; p^.next:=a[j]; a[j]:=p;
     end;
   close(f);
 end;

 procedure df(x:longint);
 var p:list;
 begin
   uz[x]:=1; p:=a[x];
   while(p<>nil)do begin
     if(uz[p^.inf]=0)then df(p^.inf);
     p:=p^.next;
     end;
 end;

 procedure afisare;
 var f:text;
   i:longint;
 begin
  assign(f,outfile); rewrite(f); nr:=0;
  for i:=1 to n do if(uz[i]=0)then begin inc(nr); df(i); end;
  write(f,nr);
  close(f);
 end;

begin
 citire; afisare;
end.