bfs看起来有点问题,求调喵~
查看原帖
bfs看起来有点问题,求调喵~
1252442
lucy2012楼主2024/8/14 13:14

喵~好累呐,搞不出来好难受。。

#include<bits/stdc++.h>
using namespace std;
char a[110][110][110];
int n,m,x,y,z,xx,yy,zz,cnt,vis[110][110][110],ttmp;
int dx[]={1,-1,0,0,0,0},dy[]={0,0,1,-1,0,0},dz[]={0,0,0,0,1,-1};
struct node{
	int x,y,z;
};
queue<node> q;
int main(){
	cin>>n;
	cin>>x>>y>>z>>xx>>yy>>zz;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			for(int k=1;k<=n;k++){
				cin>>a[j][k][i];
			}
		}
	}
	node nod={x,y,z};
	vis[x][y][z]=0;
	q.push(nod);
	while(!q.empty()){
		int tmp=0;
		node nd=q.front();
		for(int i=0;i<6;i++){
			int xi=nd.x+dx[i],yi=nd.y+dy[i],zi=nd.z+dz[i];
			if(xi<=0||xi>n||yi<=0||yi>n||zi<=0||zi>n||vis[xi][yi][zi]||a[xi][yi][zi]=='1')
			    continue;
			if(xi==xx&&yi==yy&&zi==zz){
				tmp=1;
				break;
			}
			vis[xi][yi][zi]=vis[nd.x][nd.y][nd.z]+1;
			if(vis[xi][yi][zi]>cnt)
			    cnt=vis[xi][yi][zi];
			nod={xi,yi,zi};
			q.push(nod);
		}
		q.pop();
		if(tmp){
			ttmp=1;
			break;
		}
		cnt++;
	}
	if(!ttmp)
	    cout<<-1;
	else 
	    cout<<cnt;
	return 0;
}
2024/8/14 13:14
加载中...