1.ACW1097:池塘计数
题意:‘W’:水、’.’:干的,求水坑数。
思路:最基本的Floodfill。
代码如下:
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
const int N = 1010;
typedef long long LL;
typedef pair<LL, LL> PII;
char c[N][N];
LL n,m;
bool st[N][N];
int dx[8] = {
-1, -1, -1, 0, 1, 1, 1, 0};
int dy[8] = {
-1, 0, 1, 1, 1, 0, -1, -1};
void bfs(LL sta,LL ed)
{
queue<PII>q;q.push({
sta,ed});st[sta][ed]=true;
while(q.size())
{
PII t=q.front();q.pop();
for(int i=0;i<8;i++)
{
LL ix=t.x+dx[i],iy=t.y+dy[i];
if(ix<=0||iy<=0||ix>n||iy>m||st[ix][iy]||c[ix][iy]=='.') continue;
q.push({
ix,iy})