#include<bits/stdc++.h>
using namespace std;
int read()
{
int x = 0,f = 1;
char c = getchar();
while(c<'0' || c>'9')
{
if(c=='-') f = -1;
c = getchar();
}
while(c>='0' && c<='9')
{
x = (x<<3)+(x<<1)+(c^48);
c = getchar();
}
return x*f;
}
int dx[5] = {1,0,-1,0},dy[5] = {0,1,0,-1};
void dfs(vector <vector <int> > a,int x,int y)
{
int n=a.size(),m=a[0].size();
for (int i=0;i<4;i++)
{
int nx = x+dx[i],ny = y+dy[i];
if (nx>=n || ny>=m || nx<0 || ny>0 || !a[nx][ny]) continue;
a[nx][ny] = 0;
dfs(a,nx,ny);
}
}
int main()
{
int n=read(),m=read(),ans=0;
vector <vector <int> > v;
v.clear();
for (int i=0;i<n;i++)
{
vector <int> x;
x.clear();
for (int j=0;j<m;j++)
{
int k=read();
x.push_back(k);
}
v.push_back(x);
}
for (int i=0;i<n;i++)
{
for (int j=0;j<m;j++)
{
if (v[i][j])
{
dfs(v,i,j);
v[i][j] = 0;
ans++;
}
}
}
return 0;
}
调了一下,发现了是这坨代码的前两行RE的
for (int i=0;i<n;i++)
{
for (int j=0;j<m;j++)
{
if (v[i][j])
{
dfs(v,i,j);
v[i][j] = 0;
ans++;
}
}
}