1 条题解

  • 0
    @ 2025-7-15 21:44:34
    using namespace std;
    int di[4] = {0,1,0,-1},dj[4] = {1,0,-1,0};
    int a[101][101] = {0};
    int n,m,cnt = 0;
    void bfs(int i,int j)
    {
        queue<int> qi,qj;
        qi.push(i);
        qj.push(j);
        a[i][j] = 0;
        while(!qi.empty())
        {
            int i = qi.front();
            int j = qj.front();
            for(int k=0;k<4;k++)
            {
                int x = i+di[k];
                int y = j+dj[k];
                if(x>=0 && x<n && y>=0 && y<m && a[x][y]!=0)
                {
                    qi.push(x);
                    qj.push(y);
                    a[x][y] = 0;
    
                } 
            }
            qi.pop();
            qj.pop();
        }
    }
    int main()
    {
        cin>>n>>m;
        for(int i=0;i<n;i++)
        {
            string row;         //这里被硬控三天
            cin>>row;           //这里也是
            for(int j=0;j<m;j++)
            {
                a[i][j] = row[j] - '0';//这里更是
            } 
        }
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(a[i][j] != 0)
                {
                    cnt++;
                    bfs(i,j);
                }
            }
        }
        cout<<cnt;
        return 0;
    }
    //不言了,头一回写这么多
    
    
    • @ 2025-7-15 21:46:01

      #缺#include <bits/stdc++.h>,自己补一下

  • 1

信息

ID
188
时间
1000ms
内存
256MiB
难度
10
标签
递交数
8
已通过
2
上传者