#include<bits/stdc++.h>
using namespace std;
int n,m;
char c[105][105];
struct search1
{
int x,y;
};
queue<search1>a;
int xx[5]={0,0,1,-1};
int yy[5]={1,-1,0,0};
int main()
{
cin>>n>>m;
search1 tmp;
int xa=1,xb=1;
tmp.x=xa; tmp.y=xb;
a.push(tmp);//起始位置入队
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>c[n][m];
}
}
while(!a.empty())
{
search1 now=a.front();
a.pop();
if(now.x==n&&now.y==m)//判断位置
{
cout<<"Yes";
return 0;
}
for(int i=0;i<4;i++)
{
int ax=now.x+xx[i];
int ay=now.y+yy[i];
if(c[ax][ay]=='.'&&ax>=1&&ay>=1&&ax<=n&&ay<=m)
{//合法 入队 (BUT 它合法但是不经过这里)
tmp.x=ax;tmp.y=ay;
a.push(tmp);
}
else
{//非法 下一次循环
continue;
}
}
}
cout<<"No"<<endl;//如果队列为空且走不到(n,m)
return 0;
}
蒟蒻,刚学,莫喷