讨论 / 我用匈牙利算法.错了4空.大牛请帮忙
不做寻常人 2008-05-13 07:04:00
点我顶贴 收藏 删除
崩溃了.........不知道哪里错了........

http://www.rqnoj.cn/Status_Show.asp?SID=41272

有4个结果比标准结果少1....

大牛们请帮帮忙....拜谢...

program project1;

var

g:array[1..2000,1..2000]of integer;

go:array[0..2000]of integer;

v:array[0..2000]of boolean;

n,i,j,p,k,mm:integer;

procedure init;

begin

readln(n);

for i:=1 to 2*n do

go[i]:=0;

for i:=1 to n do

begin

for j:=1 to n do g[i,j]:=0;

for j:=n+1 to n*2 do g[i,j]:=1;

end;

for i:=n+1 to n*2 do

begin

for j:=1 to n do g[i,j]:=1;

for j:=n+1 to n*2 do g[i,j]:=0;

end;

for i:=1 to n do

begin

read(k);

for j:=1 to k do

begin

read(p);

p:=p+n;

g[i,p]:=0;

g[p,i]:=0;

end;

end;

end;

function tryp(j:integer):boolean;

var

i,k:integer;

begin

for i:=n+1 to n*2 do

if (not v[i])and(g[j,i]<>0) then

begin

v[i]:=true;

if (go[i]=0)or(tryp(go[i])) then

begin

go[i]:=j;

tryp:=true;

exit;

end;

end;

tryp:=false;

end;

procedure solve;

begin

v[0]:=true;

mm:=0;

for i:=1 to n do

begin

for j:=1 to n*2 do v[i]:=false;

if tryp(i) then

mm:=mm+1;

end;

writeln(mm);

end;

begin

init;

solve;

end.

查看更多回复
提交回复