1 条题解
-
0
一道标准的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; }
- 1
信息
- ID
- 443
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 37
- 已通过
- 25
- 上传者