[USACO10OCT]Lake Counting(DFS)

很水的DFS.

为什么放上来主要是为了让自己的博客有一道DFS题解,,,

 1 #include<bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 int a[105][105],ans,flag;
 6 
 7 char sx;
 8 
 9 void dfs(int x,int y){
10     if(a[x][y]==1){
11         flag=0;
12         a[x][y]=0;
13         dfs(x-1,y);
14         dfs(x+1,y);
15         dfs(x,y-1);
16         dfs(x,y+1);
17         dfs(x-1,y-1);
18         dfs(x+1,y-1);
19         dfs(x-1,y+1);
20         dfs(x+1,y+1);
21         
22     }
23     
24 }
25 
26 int main(){
27 
28     int n,m;
29     ans=0;
30     scanf("%d%d",&n,&m);
31     
32     for(int i=1;i<=n;i++){
33         for(int j=1;j<=m;j++){
34             cin>>sx;
35             if(sx=='.'){
36                 a[i][j]=0;
37             }if(sx=='W'){
38                 a[i][j]=1;
39             }
40         }
41     }
42     for(int i=1;i<=n;i++){
43         for(int j=1;j<=m;j++){
44             flag=1;
45             dfs(i,j);
46             if(flag==0){
47                 ans++;
48             }
49         }
50     }
51     printf("%d",ans);
52     
53     return 0;
54     
55 }

 

posted @ 2017-11-08 21:31  Fylsea  阅读(184)  评论(0编辑  收藏  举报