哪里错了 bfs
  • 板块P1683 入门
  • 楼主l17663843890
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/5/6 17:15
  • 上次更新2023/11/4 23:37:14
查看原帖
哪里错了 bfs
423270
l17663843890楼主2021/5/6 17:15
#include <bits/stdc++.h>
using namespace std;
int w,h,vis[110][110];
int ans;
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
char mp[110][110];
struct node
{
	int x,y;
};
void bfs(int x,int y)
{	
	vis[x][y]=1;
	node a={x,y};
	queue<node> q;
	q.push(a);
	while(!q.empty())
	{
		node k=q.front();
		q.pop();
		ans++;
		for(int i=0;i<4;i++)
		{
			int fx=k.x+dx[i];
			int fy=k.y+dy[i];
			if(!vis[fx][fy]&&fx>=1&&fx<=h&&fy>=1&&fy<=w&&mp[fx][fy]=='.')
			{	
				vis[fx][fy]=1;
				node p={fx,fy};
				q.push(p);
			}
		}
		
	
	}
}

main()
{	int sx,sy;
	cin>>w>>h;
	for(int i=1;i<=h;i++)
	for(int j=1;j<=w;j++)
	{
		
		cin>>mp[i][j];
		if(mp[i][j]=='@');
		sx=i,sy=j;
	}
	
	
	bfs(sx,sy);
	cout<<ans; 
	
}
2021/5/6 17:15
加载中...