bfs题解,自己写的,时间%100
2026-06-05 21:51:53
发布于:广东
2阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
struct Info
{
int x;
int y;
}q[1000010];
int d[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
char a[1010][1010];
int vis[1010][1010];
int n,m;
void bfs(int x,int y)
{
int head=1,tail=1;
q[tail].x=x;
q[tail].y=y;
tail++;
while(head<tail)
{
int x0=q[head].x;
int y0=q[head].y;
vis[x0][y0]=1;
for(int i=0;i<4;i++)
{
int nx=x0+d[i][0];
int ny=y0+d[i][1];
if(nx>=0 && nx<n && ny>=0 && ny<m && a[nx][ny]!='0' && vis[nx][ny]!=1)
{
q[tail].x=nx;
q[tail].y=ny;
tail++;
vis[nx][ny]=1;
}
}
head++;
}
}
int main()
{
int cnt=0;
cin>>n>>m;
for(int i=0;i<n;i++) scanf("%s",a[i]);
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(a[i][j]!='0' && !vis[i][j])
{
cnt++;
bfs(i,j);
}
}
}
cout<<cnt;
return 0;
}
没有思路,阿巴阿巴阿巴阿巴阿巴🤪
全部评论 1

2026-06-05 来自 广东
0




有帮助,赞一个