POJ DFS2386
来源:互联网 发布:最好的root软件 编辑:程序博客网 时间:2024/05/16 17:54
最简单的DFS
Lake Counting
Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 20516 Accepted: 10338
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.
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.
* 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.
There are three ponds: one in the upper left, one in the lower left,and one along the right side.
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <limits.h>#include <ctype.h>#include <string.h>#include <string>#include <math.h>#include <algorithm>#include <iostream>#include <queue>#include <stack>#include <deque>#include <vector>#include <set>//#include <map>using namespace std;#define MAXN 100 + 10int n,m;char map[MAXN][MAXN];int vis[MAXN][MAXN];int xx[8] = {1,1,0,-1,-1,-1,0,1};int yy[8] = {0,1,1,1,0,-1,-1,-1};void DFS(int x,int y){ int i,j; for(i=0;i<8;i++){ int dx = x+xx[i]; int dy = y+yy[i]; if(dx>=0 && dx<n && dy>=0 && dy<=m && map[dx][dy]=='W' && vis[dx][dy]==0){ vis[dx][dy] = 1; DFS(dx,dy); } }}int main(){ int i,j; while(~scanf("%d%d",&n,&m)){ memset(vis,0,sizeof(vis)); for(i=0;i<n;i++){//getchar(); scanf("%s",map[i]); } int count = 0; for(i=0;i<n;i++){ for(j=0;j<m;j++){ if(map[i][j]=='W' && vis[i][j]==0){ vis[i][j] = 1; DFS(i,j); count++; } } } printf("%d\n",count); } return 0;}
0 0
- POJ DFS2386
- POJ
- poj
- POJ
- POJ
- poj
- poj
- POJ
- POJ
- poj
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- POJ
- 稳定排序和不稳定排序
- Unity3D中Camera类ScreenToWorldPoint方法使用解析
- Insanity: doing the same thing over and over agin and expecting different results.
- BestCoder Round #10(解题报告)
- distributor之Interrupt Controller Type Register, GICD_TYPER
- POJ DFS2386
- There is a fine line between entrepreneurship and insanity.
- U盘网络安装64bit centos 6.5(双系统)
- strcpy函数的实现
- warning 'XXX' declared 'static' but never defined解决方法
- 二叉搜索树--进阶篇之平衡二叉搜索树
- 扩展卡尔曼滤波的实现
- hdu 5019 Revenge of GCD
- HDU_ACM-2011 多项式求和