2 条题解

  • 0
    @ 2023-8-2 10:41:57
    #include<bits/stdc++.h>
    using namespace std;
    struct st{int x,y,step;}f[90005];
    const int dx[8]={-2,-1,1,2,2,1,-1,-2};
    const int dy[8]={1,2,2,1,-1,-2,-2,-1};
    bool mapp[305][305];
    int sx,sy,ex,ey,n,ll;
    bool onboard(int x,int y){return ((x>=0)&&(x<ll)&&(y>=0)&&(y<ll)&&mapp[x][y]==0);}
    bool isans(int x,int y){return (x==ex&&y==ey);}
    void bfs(){
    	int x,y,tail,head;
    	memset(mapp,0,sizeof(mapp));
    	head=tail=1;f[head].x=sx;f[head].y=sy;
    	f[head].step=0;mapp[sx][sy]=1;
    	while (head<=tail){
    		for (int i=0;i<8;i++){
    			int tx=f[head].x+dx[i];
    			int ty=f[head].y+dy[i];
    		
    			if (onboard(tx,ty)) {
    				tail++;f[tail].x=tx;f[tail].y=ty;
    				f[tail].step=f[head].step+1;mapp[f[tail].x][f[tail].y]=1;
    				if(isans(f[tail].x,f[tail].y)){
    					printf("%d\n",f[tail].step);
    					return; 
    				} 
    			}
    		}
    		head++; 
    	} 
    }
    int main(){
    	cin>>n; 
    	for (int i=0;i<n;i++){
    		cin>>ll;
    	    cin>>sx>>sy;cin>>ex>>ey;
    		if (isans(sx,sy)){
    			cout<<0<<endl;
    			continue;
    		}
    		bfs();
    	}
    }
    

    信息

    ID
    371
    时间
    1000ms
    内存
    512MiB
    难度
    7
    标签
    递交数
    276
    已通过
    60
    上传者