AC:70%
#include<bits/stdc++.h>
using namespace std;
int n,m,a[101][101],vis[101][101],fx[3][5]={{0,0,0,0,0},{0,0,0,1,-1},{0,1,-1,0,0}};
char mp;
struct node
{
int x,y;
};
void bfs();
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>mp;
if(mp=='.') a[i][j]=1;
else a[i][j]=0;
}
}
vis[1][1]=1;
bfs();
return 0;
}
void bfs()
{
queue<node> q;
node now;
q.push({1,1});
while(!q.empty())
{
now=q.front();
for(int i=1;i<=4;i++)
{
int xx=now.x+fx[1][i];
int yy=now.y+fx[2][i];
if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&a[xx][yy]&&!vis[xx][yy])
{
if(xx==n&&yy==m)
{
cout<<"Yes";
exit(0);
}
vis[xx][yy]=1;
q.push({xx,yy});
}
}
q.pop();
}
cout<<"No";
}