1 条题解

  • 0
    @ 2023-10-18 10:01:23

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    typedef pair<int,int> PII;
    #define x first
    #define y second
    const int N=110;
    int dist[N][N];
    char g[N][N];
    int n,m;
    int sx,sy;
    int dx[]={-1,-1,-1,0,0,1,1,1};
    int dy[]={-1,0,1,-1,1,-1,0,1};
    void bfs()
    {
        memset(dist,0x3f,sizeof dist);
        queue<PII> q;
        q.push({sx,sy});
        dist[sx][sy]=0;
        while(q.size())
        {
            PII t=q.front();
            q.pop();
            for(int i=0;i<8;i++)
            {
                int a=t.x+dx[i],b=t.y+dy[i];
                if(a<=0||a>n||b<=0||b>m) continue;
                if(g[a][b]=='*') continue;
                if(dist[a][b]!=0x3f3f3f3f) continue;
                dist[a][b]=dist[t.x][t.y]+1;
                q.push({a,b});
            }
        }
    }
    int main()
    {
        cin>>m>>n>>sy>>sx;
        for(int i=1;i<=n;i++) cin>>g[i]+1;
        sx=n+1-sx;
        bfs();
        int res=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                if(g[i][j]!='*')
                {
                    res=max(res,dist[i][j]);
                }
            }
        }
        cout<<res;
        return 0;
    }
    
    • 1

    信息

    ID
    779
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者