1562:Oil Deposits
keyword
DFS C++
概要
島の数を数える問題。
DFSで書くだけ。
char board[102][102]; int dx[] = {1,1,0,-1,-1,-1,0,1}; int dy[] = {0,1,1,1,0,-1,-1,-1}; void dfs(int x, int y){ if(board[x][y] == '*') return ; board[x][y] = '*'; int i; REP(i,8) dfs(x+dx[i],y+dy[i]); return ; } int main(){ int i, j, n, m; while(scanf("%d%d\n",&n,&m)){ if(!(n||m))break; REP(i,102)REP(j,102) board[i][j] = '*'; REPONE(i,n){ REPONE(j,m){ scanf("%c",board[i]+j); } scanf("\n"); } int ans = 0; REPONE(i,n)REPONE(j,m)if(board[i][j]=='@'){ ans++; dfs(i,j); } printf("%d\n",ans); } return 0; }