1 条题解

  • 0
    @ 2023-12-16 13:28:19
    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    char s[1001][1001];
    int a[1001][1001];
    int ans;
    int tx,ty;
    bool vis[1001][1001]; 
    const int dx[9]={0,0,-1,0,1,-1,1,-1,1};
    const int dy[9]={0,-1,0,1,0,1,1,-1,-1};
    void dfs(int x,int y){
    	vis[x][y]=1;
    	for(int i=1;i<=8;i++){
    		tx=x+dx[i],ty=y+dy[i];
    		if(tx>0&&tx<=n&&ty>0&&ty<=m&&a[tx][ty]==1&&vis[tx][ty]==0)dfs(tx,ty);	
    			
    	}
    } 
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			cin>>s[i][j];
    			if(s[i][j]=='W') a[i][j]=1;
    			else a[i][j]=0;
    		}
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			if(!vis[i][j]&&a[i][j]){
    				dfs(i,j);
    				ans++;
    			} 
    		}
    	}
    	cout<<ans<<endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    663
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    84
    已通过
    63
    上传者