阅读背景:

(回顾)水池数目&&最少步数

来源:互联网 

刷LeetCode刷到搜索,想先在nyoj上回想两道之前做过的。

 
# include<cstdio>
# include<cstdlib>
# include<string.h>
using namespace std;

int n,m;
int map[110][110];
int fx[4][2]={0,1,0,-1,1,0,-1,0};
void BFS(int x,int y){
    int nx,ny;
    for(int i=0 ;i<4 ;i++){
        nx=x+fx[i][0];
        ny=y+fx[i][1];
        if(nx>=0 && nx<n && ny>=0 && ny<m &&map[nx][ny]== 1){
            map[nx][ny]=0;
            BFS(nx,ny);
        }
    }


}

int main(){
    int T,count;
    scanf("%d",&T);
    while(T--){
        memset(map,0,sizeof(map));
        count=0;
        scanf("%d %d",&n,&m);
        for(int i=0 ;i<n ;i++)
            for(int j=0 ; j<m; j++)
                scanf("%d",&map[i][j]);

        for(int i=0 ;i<n; i++)
            for(int j=0 ;j<m ;j++){
                if(map[i][j]==1  ){
                    count++;
                    BFS(i,j);
                }
            }

        printf("%d\n",count);

    }

}
         
# include<cstd



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: