void bfs()
{
queue<int>q;//建队列
bool p[MAXN];//标记数组
queue.push(first);//入队列
while(!q.empty())
{
tmp=q.front();//提取队首元素
p[tmp.x][tmp.y]=1;//标记处理
...
for(int i=0;i<n;++i)//访问四周,将满足条件的加入队列
{
next.x=tmp.x+X[i];
next.y=tmp.y+Y[i];
if(!p[next.x][next.y]&&...)
{
q.push(next);
}
}
q.pop();//出列
}
}