Lake Counting

Lake Counting

Time Limit:   1000ms
Memory Limit:   65536KB
This problem will be judged on   PKU. Original ID:   2386
64-bit integer IO format:   %lld       Java class name:   Main
Due to recent rains, water has pooled in various places in Farmer John's field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square contains either water ('W') or dry land ('.'). Farmer John would like to figure out how many ponds have formed in his field. A pond is a connected set of squares with water in them, where a square is considered adjacent to all eight of its neighbors.  

Given a diagram of Farmer John's field, determine how many ponds he has.

Input

* Line 1: Two space-separated integers: N and M  

* Lines 2..N+1: M characters per line representing one row of Farmer John's field. Each character is either 'W' or '.'. The characters do not have spaces between them.

Output

* Line 1: The number of ponds in Farmer John's field.

Sample Input

10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.

Sample Output

3

Hint

OUTPUT DETAILS:  

There are three ponds: one in the upper left, one in the lower left,and one along the right side.
第一发wa了内心不服,大水也wa是不是该滚出队伍别去打市赛了;
最后灵光一现在GUNc++环境下交会错,要VSC++
不过解了更慢,不服啊。
Username RunID PID Result Language Time Memory Length Submit Time
jianba 27806 7745 Accepted Visual C++ 63 ms 4472 KB 784 B 2017-04-16 00:04:52
jianba 27805 7745 GNU C++     784 B 2017-04-16 00:04:00
jianba 27804 7745 Accepted GNU C++ 32 ms 5240 KB 786 B 2017-04-16 00:03:36
jianba 27803 7745 Accepted GNU C++ 47 ms 5240 KB 786 B 2017-04-16 00:03:06
jianba 27802 7745 Accepted GNU C++ 16 ms 5224 KB 1140 B 2017-04-16 00:01:22
jianba 27801 7745 Compile Error GNU C++     2280 B 2017-04-16 00:01:01
jianba 27800 7745 Accepted GNU C++ 32 ms 1280 KB 1370 B 2017-04-15 23:58:35
jianba 27799 7745 Compile Error GNU C++     1229 B 2017-04-15 23:57:52
jianba 27798 7745 GNU C++     782 B 2017-04-15 23:18:56
jianba 27797 7745 GNU C++     787 B 2017-04-15 22:57:07
jianba 27796 7745 GNU C++     785 B 2017-04-15 22:56:04
jianba 27795 7745 GNU C++     785 B 2017-04-15 22:53:28
jianba 27791 7745 GNU C++     759 B 2017-04-15 22:06:23

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<stack>
#include<queue>
using namespace std ;
char map [ 2000 ][ 2000 ];
void dfs(int x, int y)
{
if ( map [x][y] == '.' )
return ;
map [x][y] = '.' ;
dfs(x +
1 , y);
dfs(x -
1 , y);
dfs(x  , y+
1 );
dfs(x , y
-1 );
dfs(x+
1 , y + 1 );
dfs(x
-1 , y - 1 );
dfs(x+
1 , y - 1 );
dfs(x
-1 , y + 1 );
}
int main()
{
std ::ios::sync_with_stdio( false );
int n, m;
int i, j;
cin >> n >> m;
memset ( map , '.' , sizeof ( map ));
for (i = 1 ; i <= n; i++)
{
for (j = 1 ; j <= m; j++)
cin >> map [i][j];
getchar();
}
int cnt = 0 ;
for (i = 1 ; i <= n; i++)
{
for (j = 1 ; j <= m; j++)
{
if ( map [i][j]== 'W' )
{
dfs(i, j);
cnt++;
}

}
}
cout << cnt << endl ;
return 0 ;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值