BFS,30分
查看原帖
BFS,30分
1056284
PHX_2012ya楼主2024/4/19 17:27

求助

#include<bits/stdc++.h>
using namespace std;
struct node
{
	int x;
	int y;
}s;
int v[4][2]={{1,0},{0,-1},{-1,0},{0,1}},z[100][100];
int m,n,sum,vis[100][100];
char a[100][100];
queue<node> q;
void bfs(int sy,int sx)
{
	s.x=sx;
	s.y=sy;
	q.push(s);
	while(!q.empty())
	{
		s=q.front();
		q.pop();
		int fx=s.x,fy=s.y;
		for(int i=0;i<4;++i)
		{
			int jx=fx+v[i][0],jy=fy+v[i][1];
			if(jx>=0&&jx<n&&jy>=0&&jy<m&&vis[jx][jy]==0&&a[jx][jy]!='0')
			{
				s.x=jx;
				s.y=jy;
				q.push(s);
				vis[jx][jy]=1;
			}
		}
	}
	return ;
}
int main()
{
	cin>>n>>m;
	for(int i=0;i<n;++i)
	{
		for(int j=0;j<m;++j)
		{
			cin>>a[i][j];
		}
	}
	for(int i=0;i<n;++i)
	{
		for(int j=0;j<m;++j)
		{
			if(vis[i][j]==0&&a[i][j]!='0')
			{
				bfs(i,j);
				vis[i][j]=1;
				sum++;
			}		
		}
	}
	cout<<sum;
	return 0;
}
2024/4/19 17:27
加载中...