2 条题解
-
0
#include #include<bits/stdc++.h> using namespace std; const int N=1145; int n,m,ans; char a[N][N]; int dx[]={0,0,1,-1,1,1,-1,-1}; int dy[]={1,-1,0,0,-1,1,-1,1}; struct node{ int x,y; }; queue q; bool check(int x,int y){ if(x>=1&&x<=n&&y>=1&&y<=m&&a[x][y]'W') return 1; return 0; } void bfs(int x,int y){ q.push((node){x,y}); a[x][y]='.'; while(!q.empty()){ node top=q.front(); q.pop(); for(int i=0;i<=7;i++){ int xx=top.x+dx[i]; int yy=top.y+dy[i]; if(check(xx,yy)){ a[xx][yy]='.'; q.push((node){xx,yy}); } } } } int main() { cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]'W'){ ans++; bfs(i,j); } } } cout<<ans; return 0; }
-
-1
#include <iostream> #include <queue> using namespace std; int N,M,sum; char a[110][110]; int dx[] = {-1,-1,-1,0,0,1,1,1}; int dy[] = {1,0,-1,1,-1,1,0,-1}; struct Node { int x; int y; }; queue<Node>q; bool ia(int x,int y) { if (x >= 0 && x < N && y >= 0 && y < M && a[x][y] == 'W') { return true; } return false; } void bfs(int x,int y) { sum++; q.push((Node){x,y}); a[x][y] = 'F'; while (!q.empty()) { Node temp = q.front(); q.pop(); for (int i = 0;i < 8;i++) { int nx = temp.x + dx[i]; int ny = temp.y + dy[i]; if (ia(nx,ny) == true) { q.push((Node){nx,ny}); a[nx][ny] = 'F'; } } } } int main() { cin >> N >> M; for (int i = 0;i < N;i++) { for (int j = 0;j < M;j++) { cin >> a[i][j]; } } for (int i = 0;i < N;i++) { for (int j = 0;j < M;j++) { if (a[i][j] == 'W') { bfs(i,j); } } } cout << sum; return 0; }
- 1
信息
- ID
- 1351
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 256
- 已通过
- 110
- 上传者