PKU2386 Lake Counting
()
なぜかscanfでやると答えが合わなかったんだけどなぜだろうか...
cinとprintfが混ざっていますが気にしないでくださいww
#include<iostream> #include<cstdio> using namespace std; int n,m; char ground[100][100]; void dfs(int x,int y){ ground[x][y] = '.'; for(int dx = -1; dx <=1;dx++){ for(int dy = -1; dy <= 1; dy++){ int nx = x + dx; int ny = y + dy; if(0 <= nx && nx < n && 0 <= ny && ny < m && ground[nx][ny] == 'W') dfs(nx,ny); } } return ; } int main(){ int ans = 0; cin >> n >> m; for(int i = 0; i < n;i++){ for(int j = 0; j < m; j++){ cin >> ground[i][j]; } } for(int p = 0; p < n;p++){ for(int q = 0; q < m; q++){ if(ground[p][q] == 'W'){ dfs(p,q); ans++; } } } printf("%d\n", ans); return 0; }