poj - 2386 Lake Counting && hdoj -1241Oil Deposits (简单dfs)

http://poj.org/problem?id=2386

http://acm.hdu.edu.cn/showproblem.php?pid=1241

求有多少个连通子图。复杂度都是O(n*m)。

 1 #include <cstdio>
 2 
 3 char filed[110][110];
 4 int n,m;
 5 void dfs(int x,int y)
 6 {
 7     for(int i=-1;i<=1;i++)
 8         for(int j=-1;j<=1;j++)   //循环遍历8个方向
 9         {
10             int xx=x+i,yy=y+j;
11             if(xx>=0&&xx<n&&yy>=0&&yy<m&&filed[xx][yy]=='W')
12             {
13                 filed[xx][yy]='.';
14                 dfs(xx,yy);
15             }
16         }
17     return;
18 }
19 
20 int main()
21 {
22     //freopen("a.txt","r",stdin);
23     while(~scanf("%d%d",&n,&m))
24     {
25         getchar();
26         int count=0;
27         for(int i=0;i<n;i++) scanf("%s",filed[i]);
28         for(int i=0;i<n;i++)
29             for(int j=0;j<m;j++)
30             if(filed[i][j]=='W')
31             {
32                 dfs(i,j);
33                 count++;
34             }
35         printf("%d\n",count);
36     }
37     return 0;
38 }

 

posted @ 2015-05-20 21:00  NowAndForever  阅读(141)  评论(0编辑  收藏  举报