讨论 / 哪位帮忙看一下哩~~
神之水灵 2013-07-08 17:23:00
点我顶贴 收藏 删除
var n,w,i,j,min:longint;

a:array[0..100,0..100]of longint;

v1,v2:array[0..100]of boolean;

function judge:boolean;//判断作业是否已做完

var k:longint;

begin

for k:=1 to n do

if not v1[k] then exit(false);

exit(true);

end;

procedure dfs(x,num:longint);

var k:longint;

begin

if num>min then exit;

if judge then begin

if num-1<min then min:=num;

exit;

end;

v2[x]:=true;

for k:=1 to a[x,0] do v1[a[x,k]]:=true;

for k:=1 to w do

if not v2[k] then dfs(k,num+1);

v2[x]:=false;

for k:=1 to a[x,0] do v1[a[x,k]]:=false;

exit;

end;

begin

readln(n,w);

for i:=1 to w do

begin

read(a[i,0]);

for j:=1 to a[i,0] do read(a[i,j]);

end;

min:=maxlongint;

for i:=1 to n do

begin

fillchar(v1,sizeof(v1),false);//v1存某个作业是否做了

fillchar(v2,sizeof(v2),false);//v2存某个大神是否请了

dfs(i,0);

end;

writeln(min);

end.

有人说 搜索+剪枝=AC ,我是搜索错了还是剪枝错了?

查看更多回复
提交回复