踏青
Description
小白和他的朋友周末相约去召唤师峡谷踏青。他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地。草丛通过上下左右 4 个方向扩展其他草丛形成一片草地,任何一片草地中的格子都是草丛,并且所有格子之间都能通过上下左右连通。如果用’#‘代表草丛,’.'代表空地,下面的峡谷中有 2 片草地。
##…
…##
处在同一个草地的 2 个人可以相互看到,空地看不到草地里面的人。他们发现有一个朋友不见了,现在需要分头去找,每个人负责一片草地,想知道他们至少需要多少人。
Input
第一行输入 n, m (1 ≤ n,m ≤ 100) 表示峡谷大小。
接下来输入 n 行字符串表示峡谷的地形。
Output
输出至少需要多少人。
Sample Input 1
5 6
.#…
…#…
…#…#
…##.
.#…
Sample Output 1
5
——摘自YCOJ
连通块?找出上下连通的草丛,求至少要多少人,嗯~日常DFS。
找出所有连通的草块,统计数量,即为正解。
四个方向,边界处理,这道题就这样AC了:
#include<bits/stdc++.h>
using namespace std;
char s[110][110];
int n,m,sum;
int dir[4][2] = {
{1,0}, {0,1}, {-1,0},{0,-1}};
int vis[110][110];//={0};
void dfs(int x,int y)