Pagini recente » Cod sursa (job #871639) | Cod sursa (job #1194195) | Cod sursa (job #1240272) | Cod sursa (job #2865715) | Cod sursa (job #557280)
Cod sursa(job #557280)
program cuplaj;
type nod=^graf;
graf=record
inf:longint;
urm:nod;
end;
var s,f,c:array[0..10000]of longint;
v:array[0..10000]of nod;p:nod;
i,j,x,y,n,k,m:longint; fin,fout:text;
procedure adauga(x,y:longint);
begin
new(p);
p^.inf:=y;
p^.urm:=v[x];
v[x]:=p;
end;
function cauta(n:longint):boolean;
var k:nod;
begin
cauta:=false;
if f[n]<>0 then
cauta:=false
else begin
f[n]:=1;
new(k);
k:=v[n];
while k<>nil do begin
if c[k^.inf]=0 then begin
c[k^.inf]:=n;
s[n]:=k^.inf;
cauta:=true;
break;
end;
k:=k^.urm;
end;
k:=v[n];
while k<>nil do begin
if cauta(c[k^.inf]) then begin
c[k^.inf]:=n;
s[n]:=k^.inf;
cauta:=true;
break;
end;
k:=k^.urm;
end;
end;
end;
procedure solve;
var ok:boolean;nr:longint;
begin
ok:=true;nr:=0;
while ok do begin
ok:=false;
for i:=1 to n do f[i]:=0;
for i:=1 to n do
if s[i]=0 then
if cauta(i) then begin
inc(nr);
ok:=true;
end;
end;
writeln(fout,nr);
for i:=1 to n do
if s[i]<>0 then writeln(fout,i,' ',s[i]);
end;
begin
assign(fin,'cuplaj.in');reset(fin);
assign(fout,'cuplaj.out');rewrite(fout);
readln(fin,n,m,k);
for i:=0 to k-1 do begin
readln(fin,x,y);
adauga(x,y);
end;
solve;
close(fin);close(fout);
end.