记得把遍历过的点从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;
}