RT,只有40分
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int n,m;
int mp[1005][1005];
int dx[5]={0,1,0,-1,0},dy[5]={0,0,1,0,-1};
bool vis[105][105];
void dfs(int x,int y){
vis[x][y]=1;
if(x>=m&&y>=n){
return;
}
for(int i=1;i<=4;i++){
if(x+dx[i]>=1&&x+dx[i]<=m&&y+dy[i]>=1&&y+dy[i]<=n&&mp[x+dx[i]][y+dy[i]]!=1&&vis[x][y]==0){
dfs(x+dx[i],y+dy[i]);
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
char a;
cin>>a;
if(a=='#'){
mp[i][j]=1;
}
}
}
dfs(1,1);
if(vis[m][n]!=1){
cout<<"No";
return 0;
}
cout<<"Yes";
return 0;
}