Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
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;

var     i:integer;
begin
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
build_graph;
max_match;
writeln;
until false;
end.```

Followed by: