Cod sursa(job #274252)

Utilizator rendorzegAndrei Pavel rendorzeg Data 9 martie 2009 16:08:18
Problema Parcurgere DFS - componente conexe Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.41 kb
 var f,g:text;
     n,m,a,b,i,x,p,ps,k:longint;
     l,max:byte;
     d: array [1..100000,1..100000] of longint;
     st,urm,v: array [1..1000000] of longint;
 procedure dfs (var l:byte);
 begin
 st[1]:=p;
 urm[p]:=0;
 ps:=1;
 v[p]:=1;
 l:=0;
 while ps>=1 do begin
                x:=st[ps];
                k:=urm[x]+1;
                while ((k<=n) and (d[x,k]=0)) or ((d[x,k]=1) and (v[k]=1)) do k:=k+1;
                urm[x]:=k;
                if k=n+1 then   begin
                                ps:=ps-1;
                                urm[ps+1]:=0;
                                end
                         else   begin
                                v[k]:=1;
                                ps:=ps+1;
                                st[ps]:=k;
                                end;
                end;
 for i:=1 to n do if st[i]<>0 then l:=l+1;
 end;
 begin
 assign(f,'dfs.in');
 reset(f);
 assign(g,'dfs.out');
 rewrite(g);
 read(f,n,m);
 for i:=1 to m do begin
                  read(f,a,b);
                  d[a,b]:=1;
                  d[b,a]:=1;
                  end;

 max:=1;
 for p:=1 to n do begin
                  dfs(l);
                  if l>max then max:=l;
                  fillchar(v,sizeof(v),0);
                  fillchar(st,sizeof(st),0);
                  fillchar(urm,sizeof(urm),0);
                  end;
 write(g,max);
 close(f);
 close(g);
 end.