Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

谁能告诉我程序哪里不对,小妹将以身相许

Posted by Kali at 2005-06-17 21:34:54 on Problem 1486
初学几天,请gg多多指教!

const   maxn            =50;

var     sd              :array[1..maxn,1..4]of integer;
        p               :array[1..maxn,1..2]of integer;
        mp              :array[1..maxn,1..maxn]of boolean;
        cvr             :array[1..maxn]of boolean;
        lnk             :array[1..maxn]of integer;
        n,stp           :integer;

procedure read_in;
var     i:integer;
begin
        readln(n); if n=0 then halt;
        for i:=1 to n do readln(sd[i,1],sd[i,2],sd[i,3],sd[i,4]);
        for i:=1 to n do readln(p[i,1],p[i,2]);
end;

function btw(a,i,j:integer):boolean;
begin
        btw:=(i<a) and (a<j);
end;

procedure build_graph;
var     i,j:integer;
begin
        fillchar(mp,sizeof(mp),0);
        for i:=1 to n do
        for j:=1 to n do
                mp[i,j]:=btw(p[i,1],sd[j,1],sd[j,2]) and btw(p[i,2],sd[j,3],sd[j,4])
end;

function find(k:integer):boolean;
var     i,q:integer;
begin
        find:=true;
        for i:=1 to n do if mp[k,i] and not cvr[i] then begin
                cvr[i]:=true;
                q:=lnk[i]; lnk[i]:=k;
                if (q=0) or find(q) then exit;
                lnk[i]:=q;
        end;
        find:=false;
end;

procedure max_match;
var     i,q,w:integer;
begin
        fillchar(lnk,sizeof(lnk),0);
        for i:=1 to n do begin
                fillchar(cvr,sizeof(cvr),0);
                find(i);
        end;
        inc(stp);
        writeln('Heap ',stp);
        w:=0;
        for i:=1 to n do begin
                q:=lnk[i]; lnk[i]:=0;
                mp[q,i]:=false;
                fillchar(cvr,sizeof(cvr),0);
                if not find(q) then begin
                        lnk[i]:=q;
                        inc(w); if w>1 then write(' ');
                        write('(',chr(i+64),',',lnk[i],')');
                end;
                mp[q,i]:=true;
        end;
        if w=0 then write('none');
        writeln;
end;

begin
    stp:=0;
    repeat
        read_in;
        build_graph;
        max_match;
        writeln;
    until false;
end.

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator