求调,急!!!谢!!!
查看原帖
求调,急!!!谢!!!
1109877
FROGXx楼主2024/11/24 02:37
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define z false
#define mz true
int dirx[5]={0,0,0,-1,1};
int diry[5]={0,1,-1,0,0};
struct node
{
	int x;
	int y;
};
const int N=105;
ll n,m,ans=0;
bool vis[N][N];
bool b[N][N];
queue <node> q;
void bfs(int sx,int sy)
{
	ans++;
	node o;
	o.x=sx;o.y=sy;
	q.push(o);
	b[sx][sy]=z;
	while(!q.empty()){
		int qx=q.front().x;
		int qy=q.front().y;
		for(int i=1;i<=4;i++){
			int fx=qx+dirx[i],fy=qy+diry[i];
			if(b[fx][fy]==mz && vis[fx][fy]){
				node o;
				o.x=fx;o.y=fy;
				q.push(o);
				b[fx][fy]=z;
			}
		}
		q.pop();
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			char c;
			cin>>c;
			vis[i][j]=bool(c!='0');
		}
	}
	memset(b,mz,sizeof(b));
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if( b[i][j]==mz ){
				bfs(i,j);
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}
2024/11/24 02:37
加载中...