acwing 1097 池塘计数

简介: acwing 1097 池塘计数

活动 - AcWing

#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
 
using namespace std ;
const int N = 1010 ;
int d[8][2] = {{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0}} ;
char g[N][N] ;
int n , m ;
int v[N][N] ;
struct edge{
  int x , y ;
  edge(int xx, int yy){
    x = xx , y = yy ;
  }
};
queue<edge> q ;
void bfs(int a , int b ){
  q.push(edge(a,b)) ;
  v[a][b] = 1 ;
  while(!q.empty()){
    edge now = q.front() ;
    q.pop() ;
    int x = now.x, y = now.y;
     
    for(int i = 0 ; i < 8 ; i ++){
      int tx = x + d[i][0] , ty = y + d[i][1] ;
      if(tx >= 0 && tx < n && ty >= 0 && ty < m ){
        if(g[tx][ty] == 'W'&&!v[tx][ty]){
          q.push(edge(tx,ty)) ;
          v[tx][ty] = 1 ;
        }
      }
      
    }
  }
}
int main(){
  cin >> n >> m ;
  for(int i = 0 ; i < n ;i ++) cin >> g[i] ;
  int ans = 0 ;
  for(int i = 0 ; i < n ;i ++){
    for(int j= 0 ; j < m ; j ++){
      if(!v[i][j] && g[i][j] == 'W'){
        ans ++ ; 
        bfs(i,j) ;
      }
    }
  }
  cout << ans << endl ;
}
目录
相关文章
|
1月前
acwing 789 数的范围
acwing 789 数的范围
17 4
|
6月前
|
JavaScript
【leetcode】204--计数质数-暴力-&-埃拉托斯特尼法
【leetcode】204--计数质数-暴力-&-埃拉托斯特尼法
26 0
|
6月前
|
JavaScript
【leetcode】204. 计数质数 暴力 & 埃拉托斯特尼法
【leetcode】204. 计数质数 暴力 & 埃拉托斯特尼法
40 0
|
存储 算法
LeetCode-306 累加数
LeetCode-306 累加数
|
6月前
|
算法
算法题解-计数质数
算法题解-计数质数
|
6月前
|
算法
leetcode-306:累加数
leetcode-306:累加数
32 0
|
6月前
【每日一题Day198】LC1419数青蛙 | 计数
【每日一题Day198】LC1419数青蛙 | 计数
49 0
|
算法
LeetCode 306.累加数
LeetCode 306.累加数
56 0
【AcWing每日一题】3400. 统计次数
【AcWing每日一题】3400. 统计次数
59 0