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毫秒