1 条题解
-
2
#include<bits/stdc++.h> using namespace std; int n, m, ans = 0,sx,sy; char a[101][101]; int dx[]{0,0,1,1,2,1,0,0,-1,-1,-2,-1}; int dy[]{2,1,1,0,0,-1,-1,-2,-1,0,0,1}; struct bbfs{ int x, y; }; bool check(int x, int y){ if(x<1 || y<1 || x>n || y>m){ return false; } if(a[x][y] == '-'){ return false; } return true; } void bfs(int sx, int sy){ queue<bbfs> p; p.push((bbfs){sx, sy}); a[sx][sy] = '-'; while(!p.empty()){ bbfs temp = p.front(); p.pop(); for(int i = 0; i < 12; ++i){ int nx = temp.x + dx[i], ny = temp.y + dy[i]; if(check(nx, ny)){ p.push((bbfs){nx, ny}); a[nx][ny] = '-'; } } } } signed main(){ cin>>n>>m; for(int i=1;i<=n;++i){ for(int j=1;j<=m;++j){ cin>>a[i][j]; } } for(int i=1;i<=n;++i){ for(int j=1;j<=m;++j){ if(a[i][j]=='#'){bfs(i,j);ans++;} } } cout<<ans; return 0; }
- 1
信息
- ID
- 213
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 4
- 已通过
- 3
- 上传者