50分bfs,求助!
查看原帖
50分bfs,求助!
1264600
Lazy_make_name楼主2024/9/7 19:37

情况:

测试点三: 输入就是样例,我的输出是5

上代码

#include<iostream>
#include<queue>
using namespace std;
queue<int> us;
int z[8]={1,0,0,-1,0,1,-1,0};
int a,l;
bool b[102][102];
int s=0;
void bfs(){
	while(!us.empty()){
		int l2=us.front()/200,s2=us.front()%200;
		b[l2][s2]=0;
		for(int i=0;i<3;i++){
			l2+=z[i];
			s2+=z[i+4];
			if(b[l2][s2]){
				us.push(l2*200+s2);
			}
			l2-=z[i];
			s2-=z[i+4];
		}
		us.pop();
	}
	s++;
}
int main(){
	cin>>a>>l;
    char ll='a';
	for(int i=1;i<=a;i++){
	    for(int j=1;j<=l;j++){
	        cin>>ll;
	        if(ll>'0'){
	            b[i][j]=1;
	        }
	    }
	}
	for(int i=1;i<=a;i++){
		for(int j=1;j<=l;j++){
			if(b[i][j]==1){
				us.push(i*200+j);
				bfs();
			}
		}
	}
	cout<<s;
} 

2024/9/7 19:37
加载中...