水池数目 简单搜索
水池数目#include<cstdio>using namespace std;int map[1001][1001];int visit[1001][1001];int dir[4][2]= {{1,0},{-1,0},{0,-1},{0,1}};int a,b;void BFS(int aa,int bb){ map[aa][bb]=0; for(int k=0; k<4; k++) { int i=aa+dir[k][0]; int j=bb+dir[k][1]; if(i>=0&&i<=a&&j>=0&&j<=b&&map[i][j]) DFS(i,j); }}int main(){ int test; while(scanf("%d",&test)!=EOF) { while(test--) { int sum=0; scanf("%d%d",&a,&b); for(int i=0; i<a; i++) { for(int j=0; j<b; j++) { scanf("%d",&map[i][j]); } } for(int i=0; i<a; i++) { for(int j=0; j<b; j++) { if(map[i][j]==1) { sum++; BFS(i,j); } } } printf("%d\n",sum); } } return 0;}