UKE!!QwQ(叹气)
查看原帖
UKE!!QwQ(叹气)
972716
LiamZou楼主2024/2/23 09:09

#include #include using namespace std; int maps[255][255], n, m, ans, a, b, num[62505], cnt; int dir[4][2] = {0, 1, 1, 0, 0, -1, -1, 0}; bool vis[255][255]; bool in(int x, int y) { return x >= 0 && x < n && y >= 0 && y < m; } void dfs(int x, int y) { for (int i = 0; i < 4; i++) { int tx = x + dir[i][0]; int ty = y + dir[i][1]; if (in(tx, ty) && maps[tx][ty] == 1) { maps[tx][ty] = 0; cnt++; dfs(tx, ty); } } } int main() { while (cin >> n >> m && n != 0 && m != 0) { ans = 0; memset(maps, 0, sizeof(maps)); memset(num, 0, sizeof(num)); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cin >> maps[i][j]; } } for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (maps[i][j] == 1) { maps[i][j] = 0; dfs(i, j); ans++; num[cnt]++; cnt = 0; } } } cout << ans << endl; for (int i = 0; i <= 62500; i++) { if (num[i] != 0) { cout << i + 1 << " " << num[i] << endl; } } } return 0; }

2024/2/23 09:09
加载中...