hdu1241DFS
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <cstring> 3 4 using namespace std; 5 char map[110][110]; 6 int dir[8][2] = {{0,1},{0,-1},{1,0},{-1,0},{1,-1},{1,1},{-1,-1},{-1,1}}; 7 int m, n; 8 void DFS(int di, int dj) 9 { 10 11 for(int i = 0; i < 8; i++) 12 { 13 int dx = di + dir[i][0]; 14 int dy = dj + dir[i][1]; 15 if(dx<m&&dx>=0&&dy<n&&dy>=0&&map[dx][dy]=='@') 16 { 17 map[dx][dy] = '#'; 18 DFS(dx, dy); 19 } 20 } 21 22 } 23 int main() 24 { 25 while(cin >> m >> n && (m||n)){ 26 27 for(int i = 0; i < m; i++) 28 for(int j = 0; j < n; j++){ 29 cin >> map[i][j]; 30 } 31 32 int cnt = 0; 33 for(int i = 0; i < m; i++) 34 for(int j = 0; j < n; j++) 35 if(map[i][j] == '@'){ 36 map[i][j] = '#'; 37 cnt++; 38 DFS(i, j); 39 } 40 cout << cnt << endl; 41 } 42 return 0; 43 }