1 条题解

  • 0
    @ 2025-1-15 11:00:34
    #include<iostream>
    using namespace std;
    struct node{
    	int x,y,step;
    }q[160001];
    int head=1,tail=1,m,n,sx,sy,map1[4001][4001],dir[8][2]={{-1, 2}, {-2 , 1}, {-2, -1}, 
    {-1, -2}, {1, -2}, {2, -1}, {2, 1}, {1, 2}};
    void bfs(){
    	q[tail].x=sx;
    	q[tail].y=sy;
    	q[tail].step=0;
    	tail++
    	map1[sx][sy]=0;
    	while(head<tail){
    		for(int i=0;i<8;i++){
    			int tx=q[head].x+dir[i][0];
    			int ty=q[head].y+dir[i][1];
    			if(tx<1||tx>m||ty<1||ty>n){
    				continue;
    			}
    			if(map1[tx][ty]==-1){
    				q[tail].x=tx;
    				q[tail].y=ty;
    				q[tail].step=q[head].step+1;
    				map1[tx][ty]=q[tail].step;
    				tail++;
    			}
    		}
    		head++;
    	}
    }
    int main(){
    	cin>>m>>n>>sx>>sy;
    	for(int i=1;i<=m;i++){
    		for(int j=1;j<=n;j++){
    			map1[i][j]=-1;
    		}
    	}
    	bfs();
    	for(int i=1;i<=m;i++){
    		for(int j=1;j<=n;j++){
    			cout<<map1[i][j]<<" ";
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    5501
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    48
    已通过
    34
    上传者