马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
#define x first
#define y second
typedef pair<int,int>p;
int dx[]={-1,0,1,0},dy[]={0,-1,0,1}; //上左下右
char g[N][N];
int st[N][N];
void solve()
{
int n,m,l,r;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>g[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(g[i][j]=='@')
{
l=i,r=j;
}
}
}
int ans=0;
queue<p>q;
q.push({l,r});
st[l][r]=1;
while(q.size()>=1)
{
auto u=q.front();
int x=u.first,y=u.second;
q.pop();
for(int i=0;i<4;i++)
{
int a=x+dx[i],b=y+dy[i];
if(a>=1&&a<=n&&b>=1&&b<=n&&g[a][b]!='#'&&!st[a][b])
{
if(g[a][b]=='!')ans++;
st[a][b]=1;
q.push({a,b});
}
}
}
cout<<ans<<endl;
}
int main()
{
int t;
t=1;
while(t--)
{
solve();
}
}
|