写了20分钟,查错两个小时的痛苦
写的BFS,从样例开始就一直在WA
大佬救救我
#include<bits/stdc++.h>
using namespace std;
int read()
{
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-'){w=-1;}ch=getchar();}
while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
return s*w;
}
bool e[200][200],p[200][200];
struct bfser
{
int x,y;
}q[30000];
int xx[4]={0,1,-1,0};
int yy[4]={1,0,0,-1};
int xb=0;
void bfs(int x,int y)
{
int h=0,t=1,x2,y2;
xb++;
q[1].x=x;
q[1].y=y;
while(h<t)
{
h++;
x2=q[h].x;
y2=q[h].y;
}
p[x2][y2]=1;
for (int i=0;i<4;i++)
{
int x1=x2+xx[i];
int y1=y2+yy[i];
if(e[x1][y1]&&!p[x1][y1])
{
q[++t].x=x1;
q[t].y=y1;
}
}
}
int main()
{
int n=read(),m=read(),a;
for (int i=1;i<=m;i++)
{
for (int j=1;j<=n;j++)
{
scanf("%1d",&a);
a!=0?e[i][j]=1:e[i][j]=0;
}
}
for (int i=1;i<=m;i++)
{
for (int j=1;j<=n;j++)
{
if(e[i][j]&&!p[i][j])
{
bfs(i,j);
}
}
}
cout<<xb<<endl;
return 0;
}