HPU__OJ 问题

来源:互联网 发布:oracle rowid数据删重 编辑:程序博客网 时间:2024/04/29 05:13
老王修公园时间限制: 1 Sec  内存限制: 128 MB
提交: 32  解决: 15
[提交][状态][讨论版]

题目描述

刚刚在建筑大学毕业的老王来到JZ市工作。他接到任务要求把市区的空地全部修成公园。JZ市市区是一个N*M的矩形,老王拿到了该市的地图,现在判断共要修几处公园?注意:在一片空地上,它上下左右的位置是空地,则视为统一片空地。

输入

共有T组测试数据,每组测试数据包含一组N和M(0<n,m<=100)。分别表示市区的长和宽。接下来N行每行有M个数(1代表楼房,0代表空地)。

输出

输出要修建的公园个数。

样例输入

23 41 0 0 0 0 0 1 11 1 1 05 51 1 1 1 00 0 1 0 10 0 0 0 01 1 1 0 00 0 1 1 1

样例输出

23
 
#include<stdio.h>    int n,m;  int jz[110][110];  int dx[4]={0,1,0,-1};  int dy[4]={1,0,-1,0};    void dfs(int x,int y)  {      if(x>=n||x<0||y>=m||y<0)          return;      if(jz[x][y]==0){          jz[x][y]=1;          for(int k=0;k<4;k++)             dfs(x+dx[k],y+dy[k]);      }  }    int main()  {      int t;      scanf("%d",&t);      while(t--)      {          int ans=0;          scanf("%d%d",&n,&m);          for(int i=0;i<n;i++)              for(int j=0;j<m;j++)              scanf("%d",&jz[i][j]);          for(int i=0;i<n;i++){              for(int j=0;j<m;j++)              if(jz[i][j]==0){                  ans++;                  dfs(i,j);              }          }          printf("%d\n",ans);      }      return 0;  }    

0 0