#include <bits/stdc++.h>
using namespace std;
int h[1000500][4];
bool s[101][101];
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
int main(){
int n,m;
cin >> n >> m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
char x;
cin >>x;
if(x=='#') s[i][j]=0;
else s[i][j]=1;
}
}
h[1][0]=1;
h[1][1]=1;
h[1][2]=0;
int head=0,tail=1;
do{
head++;
for(int i=0;i<4;i++){
int x=h[head][0]+dx[i];
int y=h[head][1]+dy[i];
if(x>0&&x<=n&&y>0&&y<=m&&s[x][y]){
tail++;
h[tail][0]=x;
h[tail][1]=y;
h[tail][2]=h[head][2]+1;
if(x==n&&y==m){
cout << "Yes";
return 0;
}
}
}
}while(head < tail);
cout << "No";
return 0;
}
测试用例过了
but
全RE 求大佬帮调!(必关)