社区讨论
快改崩了,求捞 QAQ
P114101迷宫参与者 4已保存回复 19
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 19 条
- 当前快照
- 1 份
- 快照标识符
- @lo1gg8pk
- 此快照首次捕获于
- 2023/10/22 20:38 2 年前
- 此快照最后确认于
- 2023/11/02 21:03 2 年前
C
#include<bits/stdc++.h>
using namespace std;
int n,m,a[1010][1010],c,v,ans,lx,ly;
bool vis[1010][1010];
int tx[4]={0,1,0,-1};
int ty[4]={1,0,-1,0};
char p;
struct re{
int x,y;
};
queue<re> q;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>p;
a[i][j]=p-'0';
}
}
while(m--){
cin>>c>>v;
q.push((re){c,v});
ans=1;
if(a[c][v]>1){
cout<<a[c][v]/10<<"\n";
continue;
}
memset(vis,0,sizeof(vis));
vis[c][v]=1;
while(!q.empty()){
re x=q.front(); q.pop();
for(int i=0;i<4;i++){
lx=x.x+tx[i];
ly=x.y+ty[i];
if(lx>=1&&lx<=n&&ly>=1&&ly<=n&&!vis[lx][ly]&&a[lx][ly]!=a[x.x][x.y]&&a[lx][ly]<2&&a[x.x][x.y]<2){
q.push((re){lx,ly});
vis[lx][ly]=1;
ans++;
}
}
}
for(int h=1;h<=n;h++){
for(int j=1;j<=n;j++){
if(vis[h][j]==1) a[h][j]=ans*10;
}
}
cout<<ans<<"\n";
}
return 0;
}
刚开始时看错范围了,所以判断的地方有些离谱还望dalao们见谅
回复
共 19 条回复,欢迎继续交流。
正在加载回复...