hdu1241DFS

 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 }
View Code

 

posted @ 2014-08-08 23:42  tt_tt--->  阅读(71)  评论(0编辑  收藏  举报