题解
【基础】数池塘(四方向) USACO
1 条题解
-
0
#include <bits/stdc++.h> using namespace std; int n, m; char a[105][105]; int dx[4] = {1, -1, 0, 0}, dy[4] = {0, 0, 1, -1}; void dfs(int x, int y) { a[x][y] = '.'; for (int i = 0; i < 4; i++) { int nx = x + dx[i], ny = y + dy[i]; if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && a[nx][ny] == 'W') dfs(nx, ny); } } int main() { cin >> n >> m; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) cin >> a[i][j]; int ans = 0; for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) if (a[i][j] == 'W') { ans++; dfs(i, j); } cout << ans; }
- 1