BFS90pts #8TLE 求优化!!!
查看原帖
BFS90pts #8TLE 求优化!!!
637565
STLvector楼主2022/10/5 08:39

评测地址

#include <bits/stdc++.h>
using namespace std;

struct pt
{
    int x,y,l;
}tpt;

int dx[]={2,2,1,1,-1,-1,-2,-2};
int dy[]={1,-1,2,-2,2,-2,1,-1};

int main()
{
    int n,m,sx,sy,tx,ty;
    scanf("%d%d%d%d",&n,&m,&sx,&sy);
    bool bk[n+1][m+1],f;
    for(int ex=1;ex<=n;ex++,printf("\n"))
        for(int ey=1;ey<=m;ey++)
        {
            if(ex==sx&&ey==sy) printf("0\t");
            else
            {
                for(int i=0;i<=n;i++)
                    for(int j=0;j<=m;j++)
                        bk[i][j]=true;
                queue<pt> bfs;
                tpt.x=sx;tpt.y=sy;tpt.l=0;bfs.push(tpt);bk[sx][sy]=false;f=true;
                while(!bfs.empty())
                {
                    if(bfs.front().x==ex&&bfs.front().y==ey) {printf("%d\t",bfs.front().l);f=false;break;}
                    for(int i=0;i<8;i++)
                    {
                        tx=bfs.front().x+dx[i];
                        ty=bfs.front().y+dy[i];
                        if(1<=tx&&tx<=n&&1<=ty&&ty<=m&&bk[tx][ty]){tpt.x=tx;tpt.y=ty;tpt.l=bfs.front().l+1;bfs.push(tpt);bk[tx][ty]=false;}
                    }
                    bfs.pop();
                }
                if(f)
                    printf("-1\t");
            }
        }
    return 0;
}
2022/10/5 08:39
加载中...