2 条题解
-
1240206gj徐嘉昊 (2212224徐嘉昊) LV 9 @ 2023-07-27 09:05:22
//既然有深搜代码了,那就再附个宽搜的 #include<bits/stdc++.h> using namespace std; short dir[4][2]={0,1,1,0,0,-1,-1,0},q[1005][2],n,m,ans,ch[105][105]; bool vis[105][105]; void bfs(int i,int j) { vis[i][j]=1; int f=1,r=1;q[1][0]=i,q[1][1]=j; while(f<=r) { int x=q[f][0],y=q[f][1]; for(int c=0;c<4;c++) { int nx=dir[c][0]+x,ny=dir[c][1]+y; if(ch[nx][ny]&&!vis[nx][ny]&&nx>=1&&nx<=n&&ny>=1&&ny<=m) { r++; q[r][0]=nx,q[r][1]=ny; vis[nx][ny]=1; } } f++; } ans++; } int main() { cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>ch[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(ch[i][j]&&!vis[i][j]) bfs(i,j); cout<<ans<<endl; return 0; }
-
02023-06-27 21:47:43@
//轻松accepted #include<bits/stdc++.h> using namespace std; int n,m,a[105][105],ans; int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}}; bool vis[105][105]; void dfs(int x,int y) { vis[x][y]=true; for(int i=0;i<4;i++) { int nx=x+dir[i][0]; int ny=y+dir[i][1]; if(a[nx][ny]==1&&!vis[nx][ny]) { vis[nx][ny]=true; dfs(nx,ny); } } } 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(!vis[i][j]&&a[i][j]==1) { ans++; dfs(i,j); } } cout<<ans<<endl; return 0; }
- 1
信息
- ID
- 1236
- 难度
- 5
- 分类
- (无)
- 标签
- 递交数
- 20
- 已通过
- 12
- 通过率
- 60%
- 上传者