1 条题解
-
0Guest LV 0 MOD
-
1
#include<bits/stdc++.h> using namespace std; char a[105][105]; int b[105][105]; int n,m,cnt,ans1=0,ans2=0; int max1=0,max2=0,min1=0,min2=0; void dfs(int x,int y) { cnt++; max1=max(max1,x),max2=max(max2,y),min1=min(min1,x),min2=min(min2,y); if(!b[x-1][y]&&x-1>0&&a[x-1][y]=='#') { b[x-1][y]=1; dfs(x-1,y); } if(!b[x][y-1]&&y-1>0&&a[x][y-1]=='#') { b[x][y-1]=1; dfs(x,y-1); } if(!b[x+1][y]&&x+1<=n&&a[x+1][y]=='#') { b[x+1][y]=1; dfs(x+1,y); } if(!b[x][y+1]&&y+1<=m&&a[x][y+1]=='#') { b[x][y+1]=1; dfs(x,y+1); } } int main() { std::ios::sync_with_stdio(0); std::cin.tie(0); std::cout.tie(0); 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++) { cnt=max1=max2=0; min1=n+1; min2=m+1; if(b[i][j]==0&&a[i][j]=='#') { b[i][j]=1; dfs(i,j); if(cnt==(max1-min1+1)*(max2-min2+1)) ans1++; else ans2++; } } cout<<ans1<<endl<<ans2<<endl; return 0; }
- 1
信息
- ID
- 1265
- 难度
- 7
- 分类
- (无)
- 标签
- 递交数
- 3
- 已通过
- 1
- 通过率
- 33%
- 上传者