6 solutions
-
1
#include<bits/stdc++.h> using namespace std; const int N=120; int dx[]={-1,0,1,-1,1,-1,0,1}; int dy[]={-1,-1,-1,0,0,1,1,1}; char g[N][N]; int n,m; bool cnt[N][N]; struct node{int x,y;}; void bfs(int x,int y) { cnt[x][y]=1; queue<node>q; q.push({x,y}); while(q.size()) { node t=q.front(); q.pop(); for(int i=0;i<8;i++) { int a=t.x+dx[i],b=t.y+dy[i]; if(g[a][b]=='.') { continue; } if(a<1||a>n||b<1||b>m) { continue; } if(cnt[a][b]) { continue; } q.push({a,b}); cnt[a][b]=1; } } } int main(){ cin>>n>>m; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>g[i][j]; } } int res=0; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(g[i][j]=='W'&&!cnt[i][j]) { bfs(i,j); res++; } } } cout<<res; return 0; }
Information
- ID
- 207
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- # Submissions
- 86
- Accepted
- 19
- Uploaded By