Pagini recente » Cod sursa (job #2823871) | Cod sursa (job #2967725) | Cod sursa (job #1466616) | Cod sursa (job #1820328) | Cod sursa (job #903239)
Cod sursa(job #903239)
program grafflat;
type vect=array[0..10000] of integer;
var x,y,v:vect;
n,m,i,j,nr:integer;
f,g:text;
procedure citire;
var i:longint;
begin
readln(f,n,m);
for i:=1 to n do v[i]:=i;
for i:=0 to m-1 do readln(f,x[i],y[i]);
end;
function cel_mic(a,b:integer):integer;
begin
if a>b then cel_mic:=b
else cel_mic:=a;
end;
function cel_mare(a,b:integer):integer;
begin
if a>b then cel_mare:=a
else cel_mare:=b;
end;
procedure desc_in_comp_conexe;
var i,j,min,max,copie:integer;
begin
for i:=0 to m do
begin
min:=cel_mic(x[i],y[i]); max:=cel_mare(x[i],y[i]);
if v[min]<>0 then
if v[max]<>0 then
begin
copie:=v[max];
for j:=1 to n do if v[j]=copie then v[j]:=v[min];
end
else v[max]:=v[min];
if (v[min]=0)then
if v[max]<>0 then v[min]:=v[max]
else begin
v[min]:=min;
v[max]:=min;
end;
end;
end;
procedure afisare;
var nrc,i,j:integer;
begin
for i:=1 to n do write(g,v[i],' ');writeln(g);
nr:=0;
for i:=1 to n-1 do
if v[i]=i then
begin
inc(nr);
// write(g,'Comp no. ',nr,': ',i,' ');
// for j:=i+1 to n do
// if v[j]=v[i] then write(g,j,' ');
// writeln(g);
end;
writeln(g,nr);
end;
begin
assign(f,'dfs.in');reset(f);
assign(g,'dfs.out');rewrite(g);
citire;
desc_in_comp_conexe;
afisare;
close(f);
close(g);
end.