Pagini recente » Cod sursa (job #570702) | Cod sursa (job #514147) | Cod sursa (job #2566341) | Cod sursa (job #2424574) | Cod sursa (job #557362)
Cod sursa(job #557362)
program cuplaj;
type nod=^graf;
graf=record
inf:longint;
urm:nod;
end;
var s,f,c:array[0..10010]of longint;
v:array[0..10001]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 q:nod;
begin
cauta:=false;
if f[n]<>0 then begin
cauta:=false;end
else begin
f[n]:=1;
new(q);
q:=v[n];
while q<>nil do begin
if c[q^.inf]=0 then begin
s[n]:=q^.inf;
c[q^.inf]:=n;
cauta:=true;
break;
end;
q:=q^.urm;
end;
new(q);
q:=v[n];
while q<>nil do begin
if cauta(c[q^.inf]) then begin
s[n]:=q^.inf;
c[q^.inf]:=n;
cauta:=true;
break;
end;
q:=q^.urm;
end;
end;
end;
procedure solve;
var ok:boolean;nr,rez: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
ok:=cauta(i);
end;
for i:=1 to n do
if s[i]<>0 then inc(nr);
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:=k downto 1 do begin
read(fin,x,y);
adauga(x,y);
end;
solve;
close(fin);close(fout);
end.