re求助大佬
查看原帖
re求助大佬
557408
Tony_rao楼主2022/9/4 10:17
#include<bits/stdc++.h>
using namespace std;
struct ryy{
    int x,y;
}q[150];//模拟队列
int Map[105 ][105];
bool check[105][105]; 
int dx[4]={-1,1,0,0},dy[4]={0,0,-1,1};
int total;

void bfs(int x,int y){
    total++;//加入新的细胞
    int head=0,tail=1;
    q[1].x = x;//设立扩展初始点
    q[1].y = y;
    if(head<tail){//队列中有东西
        head++;
        for(int i=0;i<4;i++){
            int xx = dx[i]+q[head].x;
            int yy = dy[i]+q[head].y;
            if(Map[xx][yy]!=0&&(check[xx][yy] == 0)){//是非零的数字,而且还没有走过
                tail++;
                q[tail].x = xx;
                q[tail].y = yy;
            }
        }
    }
}

int main(){
    int n,m;
    cin >> n >> m;
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin >> Map[i][j];
    for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)
			if(check[i][j]==0&&Map[i][j])bfs(i,j);
    cout << total << endl;
    return 0;
}
2022/9/4 10:17
加载中...