PersonalCorpus 版 (精华区)
151771 12:08:17 2 Mar 2002
Bozhang,HIT,P.R.China 1112 Pascal Accepted 0.02 sec 61K
var
i,j,k,n:integer;
s:array[1..99,1..2] of integer;
ndl:array[1..99] of integer;
dl:array[1..99,1..99] of boolean;
used:array[1..99] of boolean;
flag:boolean;
begin
readln(n);
for i:=1 to n do begin
readln(s[i,1],s[i,2]);
if s[i,1]>s[i,2] then begin j:=s[i,1];s[i,1]:=s[i,2];s[i,2]:=j end;
end;
for i:=1 to n-1 do begin
k:=i;
for j:=i+1 to n do if s[j,1]<s[k,1] then k:=j;
if k<>i then begin
j:=s[i,1]; s[i,1]:=s[k,1]; s[k,1]:=j;
j:=s[i,2]; s[i,2]:=s[k,2]; s[k,2]:=j;
end;
end;
fillchar(dl,sizeof(dl),0);
fillchar(ndl,sizeof(ndl),0);
for i:=1 to n-1 do
for j:=i+1 to n do
if s[j,1]<s[i,2] then begin
inc(ndl[i]); dl[i,j]:=true;
inc(ndl[j]); dl[j,i]:=true;
end;
flag:=true;
fillchar(used,sizeof(used),255);
while flag do begin
flag:=false;
k:=1; for i:=2 to n do if used[i] and (ndl[i]>=ndl[k]) then k:=i;
if ndl[k]>0 then begin
used[k]:=false; ndl[k]:=-1; flag:=true;
for i:=1 to n do if dl[k,i] then begin
dl[i,k]:=false;
dec(ndl[i]);
end;
end;
end;
k:=0; for i:=1 to n do if ndl[i]=0 then inc(k);
writeln(k);
for i:=1 to n do if ndl[i]=0 then writeln(s[i,1],' ',s[i,2]);
end.
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.771毫秒