4 条题解

  • 0
    @ 2026-3-20 12:54:29

    就深搜就彳亍了

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e3+10;
    char a[N][N];
    int k,n,m,xa,xb,ya,yb,flag;
    int dx[]={1,0,-1,0};
    int dy[]={0,1,0,-1};
    void dfs(int x,int y){
    	for(int i=0;i<4;i++){
    		int nx=x+dx[i];
    		int ny=y+dy[i];
    		if(nx>0&&nx<=n&&ny>0&&ny<=n&&a[nx][ny]=='.'){
    			a[nx][ny]='#';
    			if(nx==xb&&ny==yb){
    				flag=1;
    				return;
    			}
    			dfs(nx,ny);
    		}
    	}
    }
    int main(){
    	cin>>k;
    	while(k--){
    		cin>>n;
    		for(int i=1;i<=n;i++){
    			for(int j=1;j<=n;j++){
    				cin>>a[i][j];
    			}
    		}
    		cin>>xa>>ya>>xb>>yb;
    		xa++;
    		ya++;
    		xb++;
    		yb++;
    		flag=0;
    		dfs(xa,ya);
    		if(flag==0)
    		    cout<<"NO"<<endl;
    		else cout<<"YES"<<endl;
    	}
    	return 0;
    }
    

    信息

    ID
    3023
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    90
    已通过
    42
    上传者