题解
2026-08-13 14:16:07
发布于:江苏
#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
string s = "snuke";
int n, m;
int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1};
char a[N][N];
bool vis[N][N];
struct node{ int x,y;};
queue<node> q;
void bfs(){
if(a[1][1]'s'){
q.push({1,1});
vis[1][1] = 1;
}
while(!q.empty()){
node cur = q.front(); q.pop();
int x=cur.x, y=cur.y;
if(xn && y==m){
cout << "Yes";
return;
}
char c = a[x][y];
char nc = s[(s.find(c)+1)%5];
for(int i=0;i<4;i++){
int nx = x+dx[i], ny=y+dy[i];
if(nx<1 || nx>n || ny<1 || ny>m) continue;
if(a[nx][ny] != nc) continue;
if(!vis[nx][ny]){
vis[nx][ny] = 1;
q.push({nx,ny});
}
}
}
cout << "No";
}
int main() {
cin >> n >> m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
bfs();
return 0;
}
这里空空如也




有帮助,赞一个