1 해설

  • 0
    @ 2024-1-26 10:47:50
    #include<bits/stdc++.h>
    using namespace std;
    const int N=110;
    char g[N][N];
    bool st[N][N];
    int dx[]={-1,1,0,0},dy[]={0,0,-1,1};
    int sx,sy,ex,ey;
    int n,m;
    bool dfs(int x,int y)
    {
        st[x][y]=1;
        if(x==ex&&y==ey)
        {
            return true;
        }
        for(int i=0;i<4;i++)
        {
            int a=x+dx[i],b=y+dy[i];
            if(a<0||a>=n||b<0||b>=m) continue;
            if(g[a][b]=='#') continue;
            if(st[a][b]) continue;
            if(dfs(a,b)) return true;
        }
        return false;
    }
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            cin>>n;
            m=n;
            memset(st,0,sizeof st);
            for(int i=0;i<n;i++) cin>>g[i];
            cin>>sx>>sy>>ex>>ey;
            if(g[sx][sy]=='#') cout<<"NO"<<endl;
            else
            {
                if(dfs(sx,sy)) cout<<"YES"<<endl;
                else cout<<"NO"<<endl;
            }
        }
        return 0;
    }
    
    • 1

    정보

    ID
    342
    시간
    1000ms
    메모리
    128MiB
    난이도
    10
    태그
    제출 기록
    8
    맞았습니다.
    2
    아이디