集训第一场 B题

dfs简单题 做完这题就撤,回来再继续做吧= =  水手加油~

 

 1 #include<cstdio>
 2 #include<string>
 3 
 4 int Count;
 5 int to[4][2] = {{-1,0},{1,0},{0,1},{0,-1}};
 6 int row,col;
 7 char room[1000][1000];
 8 void dfs(int i, int j)
 9 {
10     Count++;
11     room[i][j] = '#';
12     for(int k = 0; k < 4; k++)
13     {
14         int r,c;
15         r = i + to[k][0];
16         c = j + to[k][1];
17         if(room[r][c] == '.' && r < row && c < col && r >= 0 && c >= 0)
18             dfs(r,c);  //如果可以,进入
19     }
20     return ;
21 }
22 
23 int main()
24 {
25     freopen("input.txt","r",stdin);
26     int i,j,x,y;
27     while(~scanf("%d%d",&col,&row)&&(col||row))
28     {
29         Count=0;
30         for(i = 0; i < row; i++)
31             scanf("%s",room[i]); //坑爹的输入 原来没有空格
32         for(i = 0; i < row; i++)
33         {
34             for(j = 0; j < col; j++)
35             {
36                 if(room[i][j] == '@')
37                 {
38                     x=i;
39                     y=j;
40                 }
41             }
42         }
43         dfs(x,y);
44         printf("%d\n",Count);
45     }
46     return 0;
47 }