记得把遍历过的点从1变成0
#pragma GCC optimize(2)
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
const int inf=0x3f3f3f;
char a[55][55];
int n,m;
int dfs(int x,int y)
{
if(x<1||x>n||y<1||y>m||a[x][y]=='0')
return 0;
a[x][y]='0';
dfs(x-1,y);
dfs(x+1,y);
dfs(x,y-1);
dfs(x,y+1);
return 1;
}
int main(){
ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);
int t;cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
int ans=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
ans+=dfs(i,j);
cout<<ans<<endl;
}
return 0;
}
京公网安备 11010502036488号