1 条题解

  • 2
    @ 2026-7-26 14:30:40
    #include<bits/stdc++.h>
    using namespace std;
    int n, m, ans = 0,sx,sy;
    char a[101][101];
    int dx[]{0,0,1,1,2,1,0,0,-1,-1,-2,-1};
    int dy[]{2,1,1,0,0,-1,-1,-2,-1,0,0,1};
    
    struct bbfs{
        int x, y;
    };
    
    bool check(int x, int y){    
        if(x<1 || y<1 || x>n || y>m){
            return false;
        }
        if(a[x][y] == '-'){
            return false;
        }
        return true;
    }
    
    void bfs(int sx, int sy){
        queue<bbfs> p;
        p.push((bbfs){sx, sy});
        a[sx][sy] = '-';
        
        while(!p.empty()){
            bbfs temp = p.front();
            p.pop();
            
            for(int i = 0; i < 12; ++i){
                int nx = temp.x + dx[i], ny = temp.y + dy[i];
                if(check(nx, ny)){
                    p.push((bbfs){nx, ny});
                    a[nx][ny] = '-';
    
                }
            }
        }
    }
    
    signed main(){
    	cin>>n>>m;	
    	for(int i=1;i<=n;++i){
    		for(int j=1;j<=m;++j){
    			cin>>a[i][j];
    			}
    	}
    	for(int i=1;i<=n;++i){
    		for(int j=1;j<=m;++j){
    			if(a[i][j]=='#'){bfs(i,j);ans++;}
    					
    		}
    	}
    	cout<<ans;
        return 0;
    }
    • 1

    信息

    ID
    213
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    递交数
    4
    已通过
    3
    上传者