三维的bfs
题目https://www.patest.cn/contests/gplt/L3-004
#include<iostream>
#include<cstring>
#include<queue>
#include<cstdio>
using namespace std;
int g[65][130][1300];
int n,m,l,tt,ans;
int dx[6]={0,0,-1,1,0,0};
int dy[6]={0,0,0,0,1,-1};
int dz[6]={1,-1,0,0,0,0};
struct node{
int x,y,z;
};
int check(int x,int y,int z){
if((x<0)||(y<0)||(z<0)){
return 0;
}
if((x>=l)||(y>=n)||(z>=m)){
return 0;
}
return 1;
}
void bfs(int x,int y,int z){
g[x][y][z]=0;
struct node t;
t.x=x;t.y=y;t.z=z;
queue<node>q;
q.push(t);
int tmp=1;
while(!q.empty()){
struct node qq=q.front();
q.pop();
for(int i=0;i<6;i++){
int nx=qq.x+dx[i];
int ny=qq.y+dy[i];
int nz=qq.z+dz[i];
if(check(nx,ny,nz)&&g[nx][ny][nz]){
t.x=nx;t.y=ny;t.z=n