YM_1 @ 2024-07-18 16:36:25
#include <bits/stdc++.h>
using namespace std;
int n,m,ma[1000][10000],book[1000][10000];
struct node{
int x,y,step;
}q[101011000];
int bfs(int sx,int sy){
int head=0,tail=0;
q[tail].x=sx;
q[tail].y=sy;
q[tail].step=ma[sx][sy];
int sum=1;
book[sx][sy]=1;
tail++;
int nex[4][2]={{0,1},
{1,0},
{0,-1},
{-1,0}};
while(head<tail){
node h=q[head];
for(int k=0;k<4;k++){
int tx=h.x+nex[k][0];
int ty=h.y+nex[k][1];
if(tx<1||tx>n||ty<1||ty>n)
continue;
if(book[tx][ty])
continue;
if((ma[tx][ty]==0&&h.step==1)||(ma[tx][ty]==1&&h.step==0)){
sum++;
q[tail].x=tx;
q[tail].y=ty;
q[tail].step=ma[tx][ty];
book[tx][ty]=1;
tail++;
}
}
head++;
}
return sum;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
string s;
cin>>s;
for(int j=0;j<n;j++){
ma[i][j+1]=s[j]-'0';
}
}
// for(int i=1;i<=n;i++){
// for(int j=1;j<=m;j++)
// cout<<ma[i][j]<<" ";
// cout<<endl;
// }
for(int i=1;i<=m;i++){
int ssx,ssy;
cin>>ssx>>ssy;
memset(book,0,sizeof(book));
int ans=bfs(ssx,ssy);
cout<<ans<<endl;
}
return 0;
}
by YM_1 @ 2024-07-18 16:38:10
\ ^\ |\ 点这里
by wangif424 @ 2024-07-18 16:42:09
@Zhourenyu0214
[1000]
-> [1001]
by zhaohanyu0920 @ 2024-07-18 16:45:04
开数组建议大至少5位 卡死容易RE
by An_Idiot @ 2024-07-18 16:48:32
@wangif424 @zhayu__artgx 会超时吧。。
by An_Idiot @ 2024-07-18 16:50:58
@Zhourenyu0214 建议你重构,下面是我的,你当个参考。
#include<bits/stdc++.h>
using namespace std;
long long n,m;
char a[1005][1005];
long long bj[1005][1005];
long long ans[100005];
void dfs(long long x,long long y,long long k,long long M)
{
if(bj[x][y]!=-1 || a[x][y]!=k || x>n || x<1 || y>n || y<1) return;
bj[x][y]=M,ans[M]++;
dfs(x+1,y,!k,M);
dfs(x-1,y,!k,M);
dfs(x,y+1,!k,M);
dfs(x,y-1,!k,M);
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j],a[i][j]-='0',bj[i][j]=-1;
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
if(bj[x][y]==-1) dfs(x,y,a[x][y],i);
else ans[i]=ans[bj[x][y]];
cout<<ans[i]<<endl;
}
return 0;
}
by zhaohanyu0920 @ 2024-07-18 17:20:39
@An_Idiot ?空间复杂度增加跟时间复杂度没关系啊
by An_Idiot @ 2024-07-18 18:02:20
@zhayu__artgx 改完空间之后RE变成了TE
by YM_1 @ 2024-07-19 16:06:39
@An_Idiot \ \ 谢谢,但是问一下,这道题用bfs能解吗?(来自蒟蒻的提问)
by An_Idiot @ 2024-07-19 16:08:23
@Zhourenyu0214 应该是可以的吧。。我用 BFS 调了好久,最后没调出来,你可以试试,加油,你也可以看看题解
by YM_1 @ 2024-07-19 16:09:56
Thanks♪(・ω・)ノ(已关注,求互关)