1 条题解
-
0
只是一般的BFS罢了
#include<bits/stdc++.h> #define int long long #define inf 0x3f3f3f3f3f3f3f3f #define For(i,a,b) for(int i=(a);i<=(b);i++) #define foR(i,a,b) for(int i=(a);i>=(b);i--) using namespace std; const int N=1e3+5; int n,m,xx,yy; char c[N]; int a[N][N]; int dx[4]={0,0,1,-1}, dy[4]={1,-1,0,0}; inline bool check(int x,int y) {return (x>=1&&x<=n&&y>=1&&y<=m&&a[x][y]==1);} inline void bfs(int sx,int sy) { queue<pair<int,int> > Q; Q.push(make_pair(sx,sy)); while(Q.size()) { int x=Q.front().first,y=Q.front().second; Q.pop(); For(i,0,3) { int tx=x+dx[i],ty=y+dy[i]; if(!check(tx,ty)) continue; a[tx][ty]=2; Q.push(make_pair(tx,ty)); } } return; } signed main() { cin>>n>>m; For(i,1,n) { scanf(" %s",c+1); For(j,1,m) { if(c[j]=='A') a[i][j]=2,xx=i,yy=j; if(c[j]=='O') a[i][j]=1; } } bfs(xx,yy); For(i,1,n) { // cout<<m<<"\n"; For(j,1,m) { if(a[i][j]==1) cout<<"O"; if(a[i][j]==2) cout<<"A"; if(a[i][j]==0) cout<<"#"; } puts(""); } return 0; }
- 1
信息
- ID
- 19
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者