50分
查看原帖
50分
1039717
Andy_hpy楼主2024/10/21 19:08
#include <bits/stdc++.h>
#include <unistd.h>
using namespace std;
typedef long long ll;
typedef double db;
typedef long double ldb;
const ll MAXN=105;
char a[MAXN][MAXN];
ll n,m,ans;
const ll dir[][2]={{1,0},{0,1},{-1,0},{0,-1},{1,1},{-1,-1},{1,-1},{-1,1}};
struct Item{
	ll x;
	ll y;
};
void bfs(ll x,ll y){
	queue<Item>q;
	q.push({x,y});
	while(!q.empty()){
		Item curr=q.front();
		q.pop();
		for(ll i=0;i<8;++i){
			ll nx=curr.x+dir[i][0],ny=curr.y+dir[i][1];
			if(a[nx][ny]=='.'){
				continue;
			}
			q.push({nx,ny});
			a[nx][ny]='.';
		}
	}
}
int main() {
	memset(a,'.',sizeof(a));
	cin>>n>>m;
	for(ll i=1;i<=n;++i){
		cin>>(a[i]+1);
	}
	for(ll i=1;i<=n;++i){
		for(ll j=1;j<=m;++j){
			if(a[i][j]=='.')continue;
			bfs(i,j);
			++ans;
		}
	}
	cout<<ans<<endl;
	return 0;
}
2024/10/21 19:08
加载中...