3 solutions
-
2
#include<bits/stdc++.h> using namespace std; const int N=15; typedef pair<int,int> PII; #define x first #define y second int dx[]={-1,1,0,0}; int dy[]={0,0,-1,1}; int n=10,m=10; char g[N][N]; bool st[N][N]; void bfs(int x,int y) { queue<PII> q; q.push({x,y}); while(q.size()) { PII t=q.front(); q.pop(); for(int i=0;i<4;i++) { int a=t.x+dx[i],b=t.y+dy[i]; if(a<0||a>n||b<0||b>m) { continue; } if(g[a][b]=='1') { continue; } if(st[a][b]) { continue; } st[a][b]=1; q.push({a,b}); } } } int main() { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>g[i][j]; } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if((i==1||j==1||i==n||j==m)&&g[i][j]=='0') { st[i][j]=1; bfs(i,j); } } } int ans=0; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(st[i][j]==0&&g[i][j]=='0') { ans++; } } } cout<<ans; return 0; } -
1
#include<bits/stdc++.h> using namespace std; const int N=15; typedef pair<int,int> PII; #define x first #define y second int dx[]={-1,1,0,0}; int dy[]={0,0,-1,1}; int n=10,m=10; char g[N][N]; bool st[N][N]; void bfs(int x,int y) { queue<PII> q; q.push({x,y}); while(q.size()) { PII t=q.front(); q.pop(); for(int i=0;i<4;i++) { int a=t.x+dx[i],b=t.y+dy[i]; if(a<0||a>n||b<0||b>m) { continue; } if(g[a][b]=='1') { continue; } if(st[a][b]) { continue; } st[a][b]=1; q.push({a,b}); } } } int main() { for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>g[i][j]; } } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if((i==1||j==1||i==n||j==m)&&g[i][j]=='0') { st[i][j]=1; bfs(i,j); } } } int ans=0; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { if(st[i][j]==0&&g[i][j]=='0') { ans++; } } } cout<<ans; return 0; } -
0
极简版:
#include<bits/stdc++.h> using namespace std; const int N=15; int g[N][N]; int n=10,m=10; int dx[]={-1,1,0,0}; int dy[]={0,0,-1,1}; bool st[N][N]; typedef pair<int,int> PII; #define x first #define y second void bfs(int x,int y){ queue<PII> q; q.push({x,y}); st[x][y]=1; while(q.size()){ auto t=q.front(); q.pop(); for(int i=0;i<4;i++){ int a=t.x+dx[i],b=t.y+dy[i]; if(a<1||a>n||b<1||b>m) continue; if(g[a][b]==1) continue; if(st[a][b]) continue; q.push({a,b}); st[a][b]=1; } } } int main(){ for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>g[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(st[i][j]==0&&g[i][j]==0&&(i==1||i==n||j==1||j==m)){ bfs(i,j); } } } int cnt=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(st[i][j]==0&&g[i][j]==0){ cnt++; } } } cout<<cnt; return 0; }
- 1
Information
- ID
- 1006
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- (None)
- # Submissions
- 67
- Accepted
- 18
- Uploaded By