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.