我太难了。。。在线怎么测都没得问题,提交就报零
查看原帖
我太难了。。。在线怎么测都没得问题,提交就报零
1264600
Lazy_make_name楼主2024/10/3 12:33
#include<iostream>
#include<queue>
using namespace std;
int a[501][501],x,y,cnt=0;
int main(){
	queue<int> bfs; 
	char l;
	int l1,l2;
	cin>>x>>y;
	for(int i=1;i<=x;i++){
		for(int j=1;j<=y;j++){
			cin>>l;
			if(l!='*'){
				cnt++;
				if(i==1||j==1||i==x||j==y){
					bfs.push(i*1000+j);
				}
				a[i][j]=1;
			}
		}
	}
	while(!bfs.empty()){
		cnt--;
		l1=bfs.front()/1000;
		l2=bfs.front()%1000;
		if(a[l1-1][l2]==1){
			a[l1-1][l2]=0;
			bfs.push(l1*1000+l2-1000);
		}
		if(a[l1][l2-1]==1){
			a[l1][l2-1]=0;
			bfs.push(l1*1000+l2-1);
		}
		if(a[l1+1][l2]==1){
			a[l1+1][l2]=0;
			bfs.push(l1*1000+l2+1000);
		}
		if(a[l1][l2+1]==1){
			a[l1][l2+1]=0;
			bfs.push(l1*1000+l2+1);
		}
		bfs.pop();
	}
	cout<<cnt;
}

代码风格有点怪,看不懂就算了

2024/10/3 12:33
加载中...