社区讨论

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 条回复,欢迎继续交流。

正在加载回复...