1 条题解

  • 0
    @ 2022-5-25 19:40:56

    一道标准的bfs

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    using namespace std;
    char mp[551][551];
    int dis[551][551];
    bool vis[551][551];
    int dir[8][2]={{-1,-2},{1,-2},{-2,-1},{-2,1},{2,-1},{2,1},{-1,2},{1,2}};
    queue<int> q;
    queue<int> q1;
    int main(){
    	int n,m,x,y;
    	cin>>n>>m>>x>>y;
    	memset(dis,-1,sizeof(dis));
    	dis[x][y]=0;
    	vis[x][y]=1;
    	q.push(x);
    	q1.push(y);
    	while(!q.empty()){
    		int f=q.front(),f1=q1.front();
    		q.pop();
    		q1.pop();
    		for(int i=0 ; i<8 ; i++){
    			int nx=f+dir[i][0],ny=f1+dir[i][1];
    			if(nx>0 && nx<=n && ny>0 && ny<=m && vis[nx][ny]==0){
    				q.push(nx);
    				q1.push(ny);
    				dis[nx][ny]=dis[f][f1]+1;
    				vis[nx][ny]=1;
    			}
    		}
    	}
    	for(int i=1 ; i<=n ; i++){
    		for(int j=1 ; j<=m ; j++){
    			printf("%-5d",dis[i][j]);
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    
    • @ 2022-8-16 9:35:03

      第7行的mp是不是没有用到

  • 1

信息

ID
443
时间
1000ms
内存
128MiB
难度
3
标签
递交数
37
已通过
25
上传者