毕业后,Vegetable在一家建筑公司找到了工作。他所在的城市将要进行整修,要求把所有空地修成公园。
市区是一个N*M的矩形,Vegetable拿到了该市的地图,现在判断共要修几处公园?
注意:在一片空地上,它上下左右的位置是空地,则视为统一片空地。
输入 共有T组测试数据,每组测试数据包含一组N和M(0
#include<cstdio>#include<cstring>#include<cmath>#include<stack>#include<queue>#include<algorithm>using namespace std;#define INF 0x3f3f3f3f#define ll long longint n,m;int s[110][110];int dx[4] = {0,1,0,-1};int dy[4] = {1,0,-1,0};void dfs(int x,int y){ s[x][y] = 1; for (int i = 0; i <4; ++i){ int nx = x + dx[i]; int ny = y + dy[i]; if (nx >= 0 && nx < n && ny >= 0 && ny < m && s[nx][ny] == 0) dfs(nx,ny); } return ;}int main(){ int t; scanf("%d",&t); while (t--){ scanf("%d%d",&n,&m); memset(s,0,sizeof(s)); for (int i = 0; i < n; ++i){ for (int j= 0 ; j < m ;++j){ scanf("%d",&s[i][j]); } } int cnt = 0; for (int i = 0; i < n ; ++i){ for (int j = 0; j < m ; ++j){ if (s[i][j] == 0){ dfs(i,j); cnt+=1; } } } PRintf("%d/n",cnt); } return 0;}新闻热点
疑难解答