水洼的大小
题目描述:
解法:
1.bfs + dfs
2.二维并查集思路都差不多,求出每个联通水洼的大小,并做上标记,在输出时上下左右相加就好了。
CODE1:
#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#define INF 0x3f3f3f3f
#define VP vector<pair<int,int> >
using namespace std;
const int dx[4][2] = {
{
-1,0},{
1,0},{
0,1},{
0,-1}};
VP v;//ground
char a[1100][1100];
bool b[1200][1200];
int d[110000];//第i个联通块的大小
int dis[1200][1200];
int n,m,cnt = 0;
void dfs(int,int);//(x,y),sum
int main()
{
cin >> n >> m;
for(int i = 1;i <= n;++i)
{
getchar();
for(int j = 1;j <= m;++j)
{
a[i][j] = getchar();
}
}
for(int i = 1;i <= n;++i)
{
for(int j = 1;j <= m;++j)
{
if(!b[i][j]