讨论 / 匈牙利算法过不了最后两个点?
feixiang889 2010-09-08 08:26:00
点我顶贴 收藏 删除
测试结果错误.错误结果为:348

正确结果应为:344;

测试结果错误.错误结果为:348

正确结果应为:13;

以为是自己匈牙利算法写错了,拷贝了一题解上去也是70~~~

var a:array[1..1000,1..1000] of boolean;

v:array[1..1000] of boolean;

b:array[1..1000] of longint;

n,m,x,i,j,ans:longint;

function f(p:longint):boolean;

var j:longint;

begin

for j:=1 to n do

if (not a[p,j]) and not v[j] then

begin

v[j]:=true;

if (b[j]=0) or (f(b[j])) then

begin

b[j]:=p;

exit(true);

end;

end;

exit(false);

end;

begin

readln(n);

for i:=1 to n do

begin

read(m);

for j:=1 to m do

begin

read(x);

a[i,x]:=true;

end;

readln;

end;

ans:=0;

for i:=1 to n do

begin

fillchar(v,sizeof(v),false);

if f(i) then inc(ans);

end;

writeln(ans);

end.

help~~~~

查看更多回复
提交回复