1 条题解

  • 0
    @ 2023-11-5 22:58:40

    只是一般的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
    上传者