40分求调,必关!
查看原帖
40分求调,必关!
1617069
zY666888楼主2025/7/24 19:16
#include<bits/stdc++.h>
using namespace std;
int m,n,sx,sy,ex,ey;
int diry[5]={0,0,1,-1},dirx[5]{1,-1,0,0};
bool vis[110][110];
string a[110];
void dfs(int x,int y){
    vis[x][y]=1;
    if(x==ex&&y==ey){
        return ;
    }
    for(int i=0;i<4;i++){
    	int xx=x+dirx[i],yy=y+diry[i];
    	if(xx<0||xx>=n||yy<0||yy>=n||a[xx][yy]=='#'||vis[xx][yy]){
    		continue;
		}
		dfs(xx,yy); 
	}
}
void solve(){
	memset(vis,0,sizeof(vis));
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	int sx=1,sy=1,ex=n,ey=m;
	if(a[sx][sy]=='#'||a[ex][ey]=='#'){
		cout<<"No"<<endl;
		return ;
	}
	dfs(sx,sy);
	if(vis[ex][ey]){
		cout<<"Yes"<<endl; 
	}
	else{
		cout<<"No"<<endl;
	}
}
int main(){
    solve();
    
    
    return 0;
}

2025/7/24 19:16
加载中...