poj 2386 Lake Counting
2016-09-17 15:27
369 查看
Description
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.
Source
USACO 2004 November
Powered By Saruka.
Copyright © 2016 All Rights Reserved.
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.
Source
USACO 2004 November
/* Problem: 2386 User: saruka Memory: 812K Time: 16MS Language: G++ Result: Accepted */ #include<cstdio> #include<cstring> using namespace std; inline int getint() { int r = 0, k = 1; char c = getchar(); for(; c < '0' || c > '9'; c = getchar()) if(c == '-') k = -1; for(; c >= '0' && c <= '9'; c = getchar()) r = r * 10 + c - '0'; return r * k; } const int dx[8] = {-1, 1, 0, 0, -1, 1, -1, 1}; const int dy[8] = {0, 0, -1, 1, -1, -1, 1, 1}; const int maxn = 105; int n, m, xx, yy, sum = 0; char graph[maxn][maxn]; bool vis[maxn][maxn]; void init() { memset(graph, 0, sizeof(graph)); memset(vis, 0, sizeof(vis)); } void DFS(int x, int y) { vis[x][y] = true; for(int i = 0; i < 8; i++) { xx = x + dx[i]; yy = y + dy[i]; if((graph[xx][yy] == 'W') && (!vis[xx][yy])) { DFS(xx, yy); } } } int main() { init(); n = getint(); m = getint(); for(int i = 0; i < n; i++) { scanf("%s", graph[i]); } for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { if((graph[i][j] == 'W') && (!vis[i][j])) { DFS(i, j); sum++; } } } printf("%d\n", sum); return 0; }
Powered By Saruka.
Copyright © 2016 All Rights Reserved.
相关文章推荐
- Poj 2386 Lake Counting
- POJ 2386 Lake Counting(DFS)
- POJ 2386 Lake Counting
- POJ 2386 Lake Counting (水题,DFS)
- POJ 2386 Lake Counting(深搜)
- POJ 2386--Lake Counting
- POJ-2386-Lake Counting-解题报告
- POJ-2386 Lake counting
- Lake Counting (Poj 2386 // hzu.acmclub.com 11448)
- POJ-2386-Lake Counting
- Poj 2386 Lake Counting 题解
- DFS 之 poj 2386 Lake Counting
- POJ 2386 Lake Counting (DFS-floodfill)
- POJ 2386 Lake Counting(DFS:求8连通分量的个数)
- POJ 2386 Lake Counting
- POJ 2386 Lake Counting
- POJ-2386 Lake Counting
- DFS 之 poj 2386 Lake Counting
- Lake Counting(POJ-2386)
- POJ 2386 Lake Counting