使用STL的队列
void BFS()
{
||首结点入队列Q
while(!Q.empty())
{
temp=Q.front();
if(到达目的状态){输出结果;break;}
Q.pop();
for(i=1;i<=m;i++)||扩展结点temp的m种可能。
if(可以扩展)
{
处理每种可能情况;
扩展出结点入队列。
}
}
}
struct node
{
int x,y,z,t;
};
node tmp,s;
void bfs()
{
queue<node> q;
tmp.x=0;
tmp.y=0;tmp.z=0;tmp.t=0;
q.push(tmp);
while(!q.empty())
{
tmp=q.front();
if(tmp.x==A-1&&tmp.y==B-1&&tmp.z==C-1)
{
if(tmp.t<=T)printf("%d/n",tmp.t);
else printf("-1/n");
return;
}
q.pop();
for(int i=0;i<6;i++)
{
s.x=tmp.x+dir[i][0];
s,y=tmp.y+=dir[i][1];
s.z=tmp.z+sir[i][2];
s.t=tmp.t+1;
if(s.x>=0&&s.x<A&&s.y>=0&&s.y<B&&s.z>=0&&s.z<C)
if(map[s.x][s.y][s.z]==0)
{
map[s.x][s.y][s.z]=1;
q.push(s);
}
}
}
printf("-1/n");
}