__hjwucj__ @ 2024-02-26 19:23:33
题目链接
#include <bits/stdc++.h>
using namespace std;
int n,m,ans;
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
char a[1001][1001];
bool b[1001][1001];
struct node{
int x,y;
} s;
queue <node> st;
int main ()
{
cin>>n>>m;
for (int i=1;i<=n;i++)
for (int j=1;j<=n;j++)
cin>>a[i][j];
for (int i=1;i<=m;i++)
{
cin>>s.x>>s.y;
ans=0;
st.push (s);
memset (b,false,sizeof (b));
while (st.size ()!=0)
{
ans++;
if (a[st.front ().x][st.front ().y]=='0')
{
for (int i=0;i<4;i++)
{
int tx=st.front ().x+dx[i];
int ty=st.front ().y+dy[i];
if (tx<1||tx>n||ty<1||ty>n) continue;
if (b[tx][ty]) continue;
if (a[tx][ty]=='0') continue;
b[st.front ().x][st.front ().y]=true;
b[tx][ty]=true;
node l={tx,ty};
st.push (l);
}
} else
{
for (int i=0;i<4;i++)
{
int tx=st.front ().x+dx[i];
int ty=st.front ().y+dy[i];
if (tx<1||tx>n||ty<1||ty>n) continue;
if (b[tx][ty]) continue;
if (a[tx][ty]=='1') continue;
b[st.front ().x][st.front ().y]=true;
b[tx][ty]=true;
node l={tx,ty};
st.push (l);
}
}
st.pop ();
}
cout<<ans<<endl;
}
return 0;
}
by __hjwucj__ @ 2024-02-26 19:24:19
备注:测试点#1,#3,#10,#11TLE
by lizeyuhello @ 2024-03-10 11:17:34
我也是
by I_like_florr_io @ 2024-03-12 08:11:12
可能输入超时了 @hhhcj