6 条题解

  • 1
    @ 2024-10-13 9:34:11
    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    int n,m,ans;
    int dir[8][2]={{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{-1,1},{1,-1},{1,1}};
    char w[115][115];
    struct point{  int px,py;  };
    queue<point> que;
    void bfs(int tx,int ty){
    	w[tx][ty]='.';
    	que.push((point){tx,ty});
    	while(!que.empty()){
    		point p=que.front();
    		que.pop();
    		for(int i=0;i<8;i++){
    			int nx=p.px+dir[i][0];
    			int ny=p.py+dir[i][1];
    			if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&w[nx][ny]=='W'){
    				w[nx][ny]='.';
    				que.push((point){nx,ny});
    			}
    		}	
    	}
    }
    signed main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>w[i][j];	
    		}	
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			if(w[i][j]=='W'){
    				bfs(i,j);
    				ans++;
    			}	
    		}	
    	}
    	cout<<ans;	
    }
    

    信息

    ID
    2617
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    52
    已通过
    25
    上传者