1 条题解

  • 2
    @ 2026-7-25 19:33:33
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,qx,qy,zx,zy,dx[] {1,0,-1,0},dy[] {0,-1,0,1};
    char a[305][305];
    bool vis[305][305];
    struct node {
    	int x,y,step;
    };
    void bfs(int x,int y) {
    	queue<node> q;
    	q.push({x,y,0});
    	vis[x][y]=1;
    	while(!q.empty()) {
    		node fr=q.front();
    		q.pop();
    		if(fr.x==zx&&fr.y==zy){
    			cout<<fr.step;
    			return;
    		}
    		for(int i=0; i<4; i++) {
    			int nx=fr.x+dx[i];
    			int ny=fr.y+dy[i];
    			if(vis[nx][ny])continue;
    			if(a[nx][ny]=='*')continue;
    			q.push({nx,ny,fr.step+1});
    			vis[nx][ny]=1;
    		}
    	}
    	cout<<"I can't eat brain!";
    }
    int main() {
    	memset(a,'*',sizeof(a));
    	cin>>n>>m;
    	for(int i=1; i<=n; i++) {
    		for(int j=1; j<=m; j++) {
    			cin>>a[i][j];
    			if(a[i][j]=='z') {
    				qx=i;
    				qy=j;
    
    			}
    			if(a[i][j]=='#') {
    				zx=i;
    				zy=j;
    
    			}
    		}
    	}
    	bfs(qx,qy);
    	return 0;
    }
    
    • @ 2026-7-26 11:58:35

      @ 请给出文字说明

  • 1

信息

ID
158
时间
1000ms
内存
256MiB
难度
10
标签
递交数
9
已通过
3
上传者