10分求助!
  • 板块P1683 入门
  • 楼主lxr00000
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/1 14:48
  • 上次更新2024/11/1 18:33:57
查看原帖
10分求助!
1226821
lxr00000楼主2024/11/1 14:48
#include<bits/stdc++.h>
using namespace std;
int n,m;
char a[25][25];
int ans;
int vis[25][25];
int dx[5]={0,1,0,0,-1};
int dy[5]={0,0,1,-1,0};
typedef struct{
	int x,y;
}Node;
queue<Node>q;
Node qi;

int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
    	for(int j=1;j<=m;j++)
    	{
    		cin>>a[i][j];
    		if(a[i][j]=='@')
    		{
    			qi.x=i;
    			qi.y=j;
			}
		}
	}
	q.push(qi);
	vis[qi.x][qi.y]=1;
	while(!q.empty())
	{
		Node x=q.front();
		q.pop();
		int fx=x.x;
		int fy=x.y;
		for(int i=1;i<=4;i++)
		{
			int mx=fx+dx[i],my=fy+dy[i];
			if(mx<1||mx>n||my<1||my>m||a[mx][my]=='#'||vis[mx][my]==1)continue;
			vis[mx][my]=1;
			Node jin;
			jin.x=mx;
			jin.y=my;
			q.push(jin);
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(vis[i][j]==1)ans++;
		}
	}
	cout<<ans;
}
2024/11/1 14:48
加载中...