1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| #include <iostream> using namespace std;
struct node { int x, y; }q[10000];
char ma[101][101]; int n, m, ans, dx[4]={0, 0, 1, -1}, dy[4]={1, -1, 0, 0};
void bfs(int i, int j) { int front=0, rear=1; q[1].x = i; q[1].y = j; ma[i][j] = '0'; while (front < rear) { front++; for (int i=0; i<=3; i++) { int x=q[front].x+dx[i]; int y=q[front].y+dy[i]; if (x>=1 && x<=n && y>=1 && y<=m && ma[x][y]!='0') { rear++; q[rear].x = x; q[rear].y = y; ma[x][y] = '0'; } } } }
int main() { cin >> n >> m; for (int i=1; i<=n; i++) for (int j=1; j<=m; j++) cin >> ma[i][j]; for (int i=1; i<=n; i++) for (int j=1; j<=m; j++) if (ma[i][j]!='0') { ans++; bfs(i, j); } cout << ans; return 0; }
|