2746: 布丁 #include<bits/stdc++.h> #define x first #define y second using namespace std; typedef pair<int,int>PII; const int N = 510; int dir[4][2]={{-1,0},{0,-1},{1,0},{0,1}}; int a[N][N],dist[N][N]; int n,m; int bfs(int dx,int dy) { memset(dist,-1,sizeof dist); queue<PII>q; dist[0][0]=0; q.push({0,0}); while(q.size()) { PII t=q.front();q.pop(); for(int i=0;i<4;i++) { int x=t.x+dir[i][0]; int y=t.y+dir[i][1]; if(x<0||x>=n||y<0||y>=m) continue; if(a[x][y]==1||dist[x][y]!=-1) continue; dist[x][y]=dist[t.x][t.y]+1; if(x==dx&&y==dy) return dist[x][y]; q.push({x,y}); } } return 2e9; } int main() { int x,y; cin>>n>>m>>x>>y; for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>a[i][j]; if(x==0&&y==0) puts("布丁是笨蛋"); else if(a[x][y]==1) puts("小Z果然是最菜的"); else { int ans1=x+y; int ans2=bfs(x,y); if(ans2<=ans1) puts("布丁是笨蛋"); else puts("小Z果然是最菜的"); } return 0; }