1 条题解
-
2zdingch LV 5 MOD @ 2019-07-15 23:41:17
#include<bits/stdc++.h> using namespace std; int n,m; bool a[9999][9999]; int ans=0; struct shu { int x;//行 int y;//列 }; int dx[5]={0,-1,0,1,0};//上右下左 int dy[5]={0,0,1,0,-1}; void bfs(int i,int j) { ans++; shu q[99999];//队列 int front=0,rear=1; q[1].x=i; q[1].y=j; a[i][j]=0; do { front++;//出列 —> 寻找子节点 for(int i=1;i<=4;i++) { int X=q[front].x+dx[i]; int Y=q[front].y+dy[i]; if(X>0 && X<=n && Y>0 && Y<=m && a[X][Y]==1) { rear++; q[rear].x=X; q[rear].y=Y; a[X][Y]=0; } } }while(front<rear); } int main() { cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { char x; cin>>x; if(x=='0')a[i][j]=0; else a[i][j]=1; } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { if(a[i][j]==1)bfs(i,j); } cout<<ans; return 0; }
- 1
信息
- ID
- 1007
- 难度
- 9
- 分类
- (无)
- 标签
- 递交数
- 2
- 已通过
- 2
- 通过率
- 100%
- 上传者