1 条题解
-
02230134娄耀 (2212238) LV 8 @ 2023-07-01 19:59:19
#include<bits/stdc++.h> using namespace std; int n,m,a[105][105],s,maxs; int dir[4][2]={{0,1},{1,0},{-1,0},{0,-1}}; bool vis[105][105]; bool check(int x,int y) { if(x<1||x>n||y<1||y>n) return false; return true; } void dfs(int x,int y,int dep) { if(dep==1) s++; 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]&&!vis[nx][ny]&&check(nx,ny)) { vis[nx][ny]=true; s++; dfs(nx,ny,dep+1); } } } 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]&&!vis[i][j]) { s=0; dfs(i,j,1); if(s>maxs)maxs=s; } cout<<maxs<<endl; return 0; }
- 1
信息
- ID
- 1558
- 难度
- 4
- 分类
- (无)
- 标签
- 递交数
- 42
- 已通过
- 20
- 通过率
- 48%
- 被复制
- 6
- 上传者