Lake Counting

来源:互联网 发布:淘宝怎么搜同城店铺 编辑:程序博客网 时间:2024/06/08 19:09

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
Prev 
Submit Status Statistics
 Next
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 12W........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++
不过解了更慢,不服啊。
UsernameRunIDPIDResultLanguageTimeMemoryLengthSubmit Timejianba278067745AcceptedVisual C++63 ms4472 KB784 B2017-04-16 00:04:52jianba278057745GNU C++  784 B2017-04-16 00:04:00jianba278047745AcceptedGNU C++32 ms5240 KB786 B2017-04-16 00:03:36jianba278037745AcceptedGNU C++47 ms5240 KB786 B2017-04-16 00:03:06jianba278027745AcceptedGNU C++16 ms5224 KB1140 B2017-04-16 00:01:22jianba278017745Compile ErrorGNU C++  2280 B2017-04-16 00:01:01jianba278007745AcceptedGNU C++32 ms1280 KB1370 B2017-04-15 23:58:35jianba277997745Compile ErrorGNU C++  1229 B2017-04-15 23:57:52jianba277987745GNU C++  782 B2017-04-15 23:18:56jianba277977745GNU C++  787 B2017-04-15 22:57:07jianba277967745GNU C++  785 B2017-04-15 22:56:04jianba277957745GNU C++  785 B2017-04-15 22:53:28jianba277917745GNU C++  759 B2017-04-15 22:06:23

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<stack>
#include<queue>
using namespacestd;
char map[2000][2000];
voiddfs(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);
}
intmain()
{
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
原创粉丝点击