社区讨论

50分

P1596[USACO10OCT] Lake Counting S参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@m2iwygt1
此快照首次捕获于
2024/10/21 19:08
去年
此快照最后确认于
2025/11/04 16:36
4 个月前
查看原帖
CPP
#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;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...