2343 - 统计林地(bfs模板)
其他 C++ 公开

avatar 偷狗的林黛玉 发布于 2026-08-15 16:37 更新于 2026-08-15 16:37
返回
2343 - 统计林地(bfs模板).cpp
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

char mp[107][107];
int n, m;
int vis[107][107]; // 标记数组
int dx[] = {-1, 0, 1, 0};
int dy[] = {0, 1, 0,-1}; // 方向数组 

struct node{
	int x, y;  // 用来存储每一个点的坐标 
};

int main() {

	cin >> n >> m;
	for (int i=0; i<n; i++){
		for (int j=0; j<m; j++){
			cin >> mp[i][j];
		}
	}
	int ans = 0;  // 用来统计结果的变量
	for (int i=0; i<n; i++){
		for (int j=0; j<m; j++){
			// 这个地方不能是字符0,并且还不能被搜索过 
			if (mp[i][j] != '0' && vis[i][j] == 0){
				ans++; 
				queue<node> q;
				q.push({i, j}); vis[i][j] = 1;// 标记这个节点已经走过了 
				while (!q.empty()) {
					node f = q.front();
					q.pop();
					for (int k=0; k<4; k++){
						int nx = f.x + dx[k]; int ny = f.y + dy[k];
						if (nx>=0&&nx<n &&ny>=0 &&ny<m && mp[nx][ny]!='0' && vis[nx][ny] == 0){
							q.push({nx, ny});
							vis[nx][ny] = 1;
						}
					} 
				}
			} 
		}
	}	 
	cout << ans;
	return 0;
}
wzs_oj@kernel:~ — wzs-sh
guest@wzsoj:~$
刷新页面 F5
复制 Ctrl+C
粘贴 Ctrl+V
搜索题目
站点公告
今日神谕
CSP 倒计时
排行榜
我的提交
Esc 关闭 Enter 跳转 支持模糊匹配数字