社区讨论
BFS全WA求助
P1506拯救oibh总部参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo3cvqv9
- 此快照首次捕获于
- 2023/10/24 04:34 2 年前
- 此快照最后确认于
- 2023/10/24 04:34 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
long long sum;
int n,m;
char a[505][505];
int aa[505][505];
struct q{
int x;
int y;
} nod[250010];
int dx[]={0,0,0,1,-1};
int dy[]={0,1,-1,0,0};
void bfs(int x,int y){
int nx,ny,he=0,ta=1;
aa[x][y]=1;
q ll,kk;
ll.x=x,ll.y=y;
nod[0]=ll;
while(he<ta){
he++;
ll=nod[he];
for(int i=0;i<=4;i++){
nx=ll.x+dx[i];
ny=ll.y+dy[i];
if(nx>=0&&ny>=0&&nx<n&&ny<m&&a[nx][ny]!='*'&&aa[nx][ny]!=1){
kk.x=nx,kk.y=ny;
aa[nx][ny]=1;
ta++;
nod[ta]=kk;
}
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
}
}
for(int i=0;i<n;i++){
if(a[i][0]=='0'&&aa[i][0]!=1){
bfs(i,0);
}if(a[i][m-1]=='0'&&aa[i][m-1]!=1){
bfs(i,m-1);
}
}
for(int i=0;i<m;i++){
if(a[0][i]=='0'&&aa[0][i]!=1){
bfs(0,i);
}if(a[n-1][i]=='0'&&aa[n-1][i]!=1){
bfs(n-1,i);
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(aa[i][j]==0&&a[i][j]!='*'){
sum++;
}
}
}
cout<<sum;
}
样例+自造数据全过
全wa
回复
共 1 条回复,欢迎继续交流。
正在加载回复...