码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1241 油田 裸DFS

时间:2015-05-15 21:19:07      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

题意:@代表油田 8个方向上还有@就相连 相当于求图中连通子图的个数
Sample Input
1 1 // n m
*
3 5
*@*@*
**@**
*@*@*
1 8
@@****@*
5 5
****@
*@@*@
*@**@
@@@*@
@@**@
0 0

Sample Output
0
1
2
2

 

技术分享
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<string>
 5 #include<algorithm>
 6 using namespace std;
 7 
 8 int d[8][2] = {{1,0},{1,-1},{1,1},{0,-1},{0,1},{-1,0},{-1,-1},{-1,1}};
 9 char map[110][110] ;
10 
11 int n , m ;
12 
13 void dfs(int x , int y)
14 {
15     int fx , fy ;
16     int i ;
17     map[x][y] = * ;
18     for (i = 0 ; i < 8 ; i++)
19     {
20         fx = x + d[i][0] ;
21         fy = y + d[i][1] ;
22         if (fx>=0 && fx<n && fy>=0 && fy<m && map[fx][fy] == @)
23         {
24             dfs(fx,fy) ;
25         }
26     }
27 }
28 
29 int main()
30 {
31     //freopen("in.txt","r",stdin) ;
32 
33 
34    while (scanf("%d %d" , &n , &m) !=EOF)
35    {
36        if (n == 0 && m == 0)
37           break ;
38        int i , j ;
39 
40 
41        for (i = 0 ; i < n ; i++)
42        {
43            for (j = 0 ; j < m ; j++)
44           {
45               cin>>map[i][j];         //用scanf一直WA=.=
46           }
47 
48        }
49        int sum = 0 ;
50        for (i = 0 ; i < n ; i++)
51         for (j = 0 ; j < m ; j++)
52        {
53            if (map[i][j] == @)
54            {
55                sum++ ;
56 
57                dfs(i,j) ;
58            }
59        }
60        printf("%d\n" , sum) ;
61 
62    }
63 
64     return 0;
65 }
View Code

 

hdu 1241 油田 裸DFS

标签:

原文地址:http://www.cnblogs.com/-Buff-/p/4506774.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!