社区讨论

30分bfs,求大佬帮看看

P1451求细胞数量参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m0pbfhvp
此快照首次捕获于
2024/09/05 21:21
去年
此快照最后确认于
2024/09/06 11:37
去年
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int lie=0;
int ans=0;
int hang=0;
int tu[100][100]={0};
struct ai
{
    int x;
    int y;
};
void bfs(int a,int b)
{
    queue <ai> q;
    ans++;
    tu[a][b]=0;
    q.push({a,b});
    do
    {
        ai t=q.front();
        q.pop();
        for(int i=0;i<=3;i++)
        {
            int ix=t.x+dx[i];
            int iy=t.y+dy[i];
            if((ix>=0)&&(ix<hang)&&(iy>=0)&&(iy<lie)&&(tu[ix][iy]))
            {
                q.push({ix,iy});
                tu[ix][iy]=0;
            }
        }
    }
    while(!q.empty());
}
int main()
{
    cin>>hang>>lie;
    fill(tu[0],tu[102],0);
    for(int i=0;i<hang;i++)
    {
        for(int j=0;j<lie;j++)
        {
            char temp=getchar();
            int t=temp-48;
            if(t!=0)
            {
                tu[i][j]=1;
            }
        }
    }
    
    for(int i=0;i<hang;i++)
    {
        for(int j=0;j<lie;j++)
        {
            if(tu[i][j])
            {
                bfs(i,j);
            }
        }
    }
    cout<<ans<<endl;
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...