您的位置:首页 > 其它

poj2239 Selecting Courses

2013-06-04 19:40 489 查看
最近在学二分图匹配(是的,你没看错,我也没开玩笑,对此我也很无奈),继续发匹配的水题。

poj2239其实很容易就可以看出来可以把课程跟日程建立二分图,然后用匹配做。

var
n,i,j,p,q:longint;
a:array[1..310,1..310]of longint;
t:array[1..310]of longint;
match:array[1..310]of longint;
h:array[1..310]of boolean;
function check(v:longint):boolean;
var i,j:longint;
begin
for i:=1 to t[v] do
if(not h[a[v,i]])then
begin
h[a[v,i]]:=true;
if(match[a[v,i]]=0)or(check(match[a[v,i]]))then
begin
match[a[v,i]]:=v;
exit(true);
end;
end;
exit(false);
end;
procedure hungarian;
var i,ans:longint;
begin
ans:=0;
for i:=1 to n do
begin
fillchar(h,sizeof(h),0);
if(check(i))then inc(ans);
end;
writeln(ans);
end;
begin
readln(n);
while(not eof)do
begin
for i:=1 to n do
begin
read(t[i]);
for j:=1 to t[i] do
begin
read(p,q);
a[i,j]:=7*(q-1)+p;
end;
end;
fillchar(match,sizeof(match),0);
hungarian;
readln(n);
end;
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  POJ 二分图匹配